java异常处理规范

  • 异常处理的优势【存在意义】:异常检测者有检测出异常的能力,但不知道在出现该异常的情况下应该怎么处理。故库方法一般会抛出异常给调用者来处理。所以总结而言,异常处理的优势就是,将处理错误(调用者处理)从检测错误(被调用者检测)中分离出来。
  • 异常的分类:
    1. 系统错误:内部系统错误,虚拟机抛出。免检。
    2. 异常:由程序和外部环境所引起的错误,这些错误能被程序捕获和处理。必检。
    3. 运行时异常:程序设计错误,通常虚拟机抛出。免检。
  • 关于异常处理需要注意的点:
    1. Exception类,既可能是普通的异常,也可能是运行时异常,故实际编程中最好不要直接抛出Exception,而是抛出其子类。
    2. 运行时异常,只需抛出,无需捕获处理(java8允许处理,但是不要画蛇添足)
  • 警告:
    1. Exception的子类中:
      • 必检异常类型常见的有:FileNotFoundException、IOException(可以动手试试,必须处理的异常);
      • 免检异常类型常见的有:NullPointerExceptin、ArithmeticException、IndexOutofBoundsException、IllegalArgumentException(抛出后无需处理的异常)
    2. java没有整数上溢或下溢异常

  • 运行时异常和普通异常:
    • 若出现运行时异常,如NullPointerException,直接导致当前线程中断;
    • 若出现普通异常:
      • 抛出处理:当前线程中断;换句话说,当前线程(的当前代码)不接受你这个异常的存在,我不想理你了。
      • 捕获处理:当前线程不会中断,后续继续处理。你这个异常,当前线程是可以接受的,我还会继续后续处理。

  • 很显然,异常的处理应当视我们的业务逻辑需要,做出相应的合理处置方式。
  • 现在,你总该明白什么时候应该(在方法签名后面)声明异常,什么时候(在方法中)捕获异常了吧?
posted @ 2018-09-25 01:11  梁桦  阅读(1547)  评论(0编辑  收藏  举报