zoukankan      html  css  js  c++  java
  • 异常处理机制

    所有异常类的父类是Throwable
     
    面试注意点:
    1.Exception=RuntimeException(运行时异常)+CheckedException(检查异常)
      CheckedException常见有IO异常和SQL异常     
      RuntimeException=NullPointerException、ArrayStoreException(数据存储异常)、ClassCastException(类型转换异常)、InexOutOfBoundException(数组越界异常)、BufferOverflowException(缓冲区溢出异常)、ArithmeticException(算数异常)、等
    2.异常不停的向上一层抛出直到遇见处理块,多线程由Thread.run()抛出,单线程由main()抛出.抛出之后相应线程或进程退出
    3.(1)基类在上层,所以先捕获子类后捕获基类
       (2)尽早抛出异常,能处理就处理不能再抛出,
    4.try/catch/finally的组合:(1)try/catch(2)try/finally(3)try/catch..catch/finally
         a.try,finally只能一个,catch可以多个。
         b.先执行try有异常则执行catch(多个catch相当于if else if)最后执行finally。无异常时先try然后finally
         c.jdk1.7允许用管道写多个catch:  catch(IOException|Exception e){}
    5.(1)Throwable:public class Throwable extends Object implements Serializable
      (2)Exception:public class Exception extends Throwable
    a.(1)是所有异常的超类,(2)是所有异常的父类
    b.12都是公共类,因为1可以被序列化(Serializable)所以其子类Exception 也可以被序列化
     
    6.捕获一个线程抛出的异常的方法:用UncaughtExceptionHandler(异常捕获处理方法)来捕获线程抛出的异常
    .....
    7.throw和throws的区别:
    throws用在函数头,表示出现异常的可能性但不一定会发生异常。
    throw用在函数体,显示的抛出一个异常,若被执行则一定抛出了该异常
    例:class test{
        public void f(int i) throws MyException{
        if(i=1)throw new MyException();
        }
     
     
    序言
     
    Android异常剖析意义:
    1、提前预见可能会报错的代码段;
    2、提高解决问题的效率。
    学习收获:
    1、Android常见异常发生的场景;
    2、如何快速定位问题、以及怎么分析、解决问题;
    3、实际开发中,如何做好常见异常的防范。
     
    第一章Android常见异常的分类
    大致可以分为以下两类:
    1、编译时错误(eg:ClassNotFoundException/layout中找不到ID等);安装过程报错
    2、运行时(Runtime)错误。
    (eg:数组越界/类型转换异常等)运行过程报差
     
    第二章常见异常举例
    1.编译期异常(例如找不到类):
    (1)找到caused by冒以后的部分
    (2)有代码出错的代码行数,可以点击定位查看
    *运行期异常(以数组越界为例):定位查看,定位前一句通常也有错误提示
     
    第三章 异常解决方案
    第四章具体案例分析
     
    1.空指针
    NullPointerException:使用了一个没有被实例化的指
     
    2.越界
    ArrayIndexOutofBoundsException:
    3.权限不够
    SecurityException:权限去AndroidManifest.xml里设置
     
    第五章Android全局异常捕获处理
    1. 全局错误 
     
    UncaughtExceptionHandler类有相应方法
    public class CrashHandler implements Thread. UncaughtExceptionHandler{
    private static CrashHandler mInstance;
    private crashHandler(){}
    //单例
    public static crashHandler getInstance(){
    if(mInstance==nul1){
    synchronized(CrashHandler. class){
    if(mInstance==null){
    mInstance=new CrashHandler();
    return mInstance;}
     
    public void uncaughtException(Thread t,Throwable e){
    //1,收集错误信息;
    //2,保存错误信息;
    //3,上传到服务器
    }
  • 相关阅读:
    out/host/linuxx86/obj/EXECUTABLES/aapt_intermediates/aapt 64 32 操作系统
    linux 查看路由器 电脑主机 端口号 占用
    linux proc进程 pid stat statm status id 目录 解析 内存使用
    linux vim 设置大全详解
    ubuntu subclipse svn no libsvnjavahl1 in java.library.path no svnjavahl1 in java.library.path no s
    win7 安装 ubuntu 双系统 详解 easybcd 工具 不能进入 ubuntu 界面
    Atitit.json xml 序列化循环引用解决方案json
    Atitit.编程语言and 自然语言的比较and 编程语言未来的发展
    Atitit.跨语言  文件夹与文件的io操作集合  草案
    Atitit.atijson 类库的新特性设计与实现 v3 q31
  • 原文地址:https://www.cnblogs.com/StarZhai/p/9873500.html
Copyright © 2011-2022 走看看