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,上传到服务器
    }
  • 相关阅读:
    Eclipse的SVN插件与本地SVN客户端关联不上
    Oracle与MySQL连接配置
    树莓派实践项目
    20135333苏正生——信息安全系统设计基础第十四周学习总结
    《图解tcp/ip》读书笔记(二)
    解决VC几个编译问题的方法——好用
    《深入理解计算机系统》深入实践之——vim深入研究
    20135333苏正生——信息安全系统设计基础第十二周学习总结
    《图解tcp/ip》读书笔记(一)
    《你的灯亮着吗?:发现问题的真正所在》读书笔记2
  • 原文地址:https://www.cnblogs.com/StarZhai/p/9873500.html
Copyright © 2011-2022 走看看