异常的相关知识

来源:互联网 发布:时光知味岁月沉香 编辑:程序博客网 时间:2024/06/07 03:27
    1. 异常
      1. Object->Throwable
        1. Error
        2. Exception
          1. RuntimeException
            1. 运行时异常
          2. 其它
            1. 受检异常(运行时异常)
        3. try{}catch() {}
          1. jdk1.7 c(Exception|*** e) 同级/没有直接继承关系
          2. 将子类写在前面
        1. 1.7自动关闭流 closeable
          1. try(//初始化)
      2. 异常处理
        1. 定义:异常时阻止当前方法和作用域继续执行的问题,异常若不处理会导致程序中断执行
        2. 格式:

    try{

    //有可能发生异常的代码段 }catch(异常类型 对象){ //异常的处理操作 }catch(异常类型 对象){ //异常的处理操作 } ... finally{ //异常的统一出口 }

    1. 子类在前,同级的可以并列
    1. 过程;
      1. 一旦产生了异常,系统自动产生一个异常类的实例化对象
      2. 如果有try,自动找匹配的catch语句执行,如果没有异常处理,程序退出,并由系统报告错误
      3. 所有catch根据参数来匹配异常类的实例化对象,匹配成功,由该catch执行
    2. Throwable所有异常的父类(实现类)
      1. Error系统级错误(JVM内部),程序无法控制,尽量避免
      2. Exception程序错误
        1. 直接子类
          1. CheckedException(受检异常/检查异常)必须try-catch或者throw抛出(throws方法参数后声明)
          2. throw抛出,异常抛出,调用方处理
          3. throwsthrow配合使用
        2. RuntimeException之类
          1. 运行时异常,没有强制要求,不用try也不用抛出
    3. new Exception().printStackTrace()打印异常的堆栈信息
    4. VM的处理方式是,中断程序的运行。
    5. getMessage()
    1. 常见异常
      1. ArithmeticException
      2. NullPointerException
      3. ArrayIndexOutOfBoundsException
      4. IndexOutOfBoundsException
      5. IOException
      6. SQLException
      7. IllegalArgumentException
      8. NoSuchElementException
      9. InputMismatchException
      10. NumberFormatException
      11. ClassNotFoundException
      12. ClassCastException
      13. DateFormatException
      14. OutOfMemoryExceptioin
      15. StackOverFlowException?
    2. 规则:
      1. 第一、try语句不能单独存在,可以和catchfinally组成 try...catch...finallytry...catch try...finally三种结构,catch语句可以有一个或多个,finally语句最多一个,trycatch finally这三个关键字均不能单独使用(throw可以单独出现)
      2. 第二、trycatchfinally三个代码块中变量的作用域分别独立而不能相互访问
      3. 第三、多个catch块时候,Java虚拟机会匹配其中一个异常类或其子类,就执行这个 catch块,而不会再执行别的catch块。
    1. 自定义异常
      1. 定义:通常开发中会把一些业务逻辑异常定义为异常类(继承已有异常类),利用异常机制,多层调用时便于处理
        1. for instance :登录验证异常/权限控制异常
      1. 对于一些检查异常,可以将其包装为运行时异常,便于解除方法重写时的一些限制
        1. 然后再调用方, 调用getCause()解除包装
    1. assert
      1. 关键字,表示断言
      2. 定义:判断某一个方法逻辑处理后的结果是否正确
      3. 语法: assert表达式 :不成立时输出的字符串;
        1. 需要jvm参数 -ea
        2. AssertionException
      1. Debug...

     

    1. StringBuffer/StringBuilder
      1. 出现原因:使用String连接字符串,代码性能低,因为String内容不可变
        1. 连接过程中会产生大量的垃圾对象
      2. 默认动态数组size:16
      3. capacity()
      4. new StringBuilder(int capacity)
      5. toString

     

    1. Extends
      1. 两种异常的区别
        1. 用不用强制try catch
        2. 是谁的直接子类
      2. final, finally, finalize三者的区别
        1. final:修饰属性->常量,修饰方法->不能被子类重写,修饰->不能有子类
        2. finally:try catch配合使用,始终执行
        3. finalize:垃圾回收器确定没有引用指向该对象后,由对象回收器调用该对象的这个方法,回收内存,由于具有不确定性,所以不常用
      3. finally,无路try是否有有return/是否异常执行, finally代码块均会执行
        1. 异常的统一出口

     

    Machine generated alternative text:Error AWTError Object Throwable SQL-Exception 10E 泯 c 贮 ption Il C assNOtFOtmdE c 以 《 on Exception RuntimeException NullPointerException 《 ArithmetcExcepbon ArraylndeXOutOfBundSException

     

    Screen clipping taken: 3/15/2017 23:57

     

     

    1. Notice
      1. throwthrows关键字: throws关键字主要在方法的声明上使用,表示方法中不处理异常,而交给调用处处理。实际 上对于Java程序来讲,如果没有加入任何的异常处理,默认由JVM进行异常的处理操作。 throw关键字表示在程序中手动抛出一个异常,因为从异常处理机制来看,所有的异常一旦 产生之后,实际上抛出的就是一个异常类的实例化对象,那么此对象也可以由throw直 接抛出
      2. catch之外也可以使用throw ***
      3. java [-ea]//JVM参数 class [//param]
      4. 默认可以抛出RuntimeException,无需throws声明
0 0
原创粉丝点击