Java基础 (16) 异常

2019-02-20  本文已影响0人  perry_Fan

异常处理机制主要回答了三个问题

Throwable:所有的异常类型的根类
Error:程序本身无法处理的错误这些错误是不可查的,并且它们在应用程序的控制和处理能力之外。编译器不做检查。
Exception:程序本身可以处理的异常,捕获后可能恢复
总结:前者是程序无法处理的错误,后者是可以处理的异常。

分为 运行时异常(派生于 RuntimeException 的异常) 和 其他异常 。
划分这两种异常的规则是:由程序错误(一般是逻辑错误,如错误的类型转换、数组越界等,应该避免)导致的异常属于RuntimeException;
而程序本身没有问题,但由于诸如I/O这类错误(eg:试图打开一个不存在的文件)导致的异常就属于其他异常。
RuntimeException:不可预知的,程序应当自行避免。
非RuntimeException:可预知的,从编译器校验的异常。

从责任角度看
1、Error属于JVM需要负担的责任;
2、RuntimeException 是程序应该负担的责任;
3、Checked Exception 可检查异常时Java编译器应该负担的责任;

常见Error 以及 Exception
RuntimeException

  1. NullPointerException - 空指针引用异常
  2. ClassCastException - 类型强制转换异常
  3. IllegalArgumentException - 传递非法参数异常
  4. IndexOutOfBoundsException - 下标越界异常
  5. NumberFormatException - 数字格式异常

非RuntimeException

  1. ClassNotFoundException - 找不到指定class的异常
  2. IOException - IO操作异常

Error

  1. NoClassDefFoundError - 找不到class定义的异常
  2. StackOverflowError - 深递归导致栈被耗尽而抛出的异常
  3. OutOfMemoryError - 内存溢出异常

Java异常的处理原则

主流的异常处理框架

try-catch的性能

关于Exception的一些探讨

上一篇下一篇

猜你喜欢

热点阅读