Java异常

108 阅读1分钟

1. 简介

异常类继承图

异常
Java的错误类(Error)和异常类(Exception)都是Throwable的子类,基本由这两大类展开的。

Error

Error这个类通常指的是系统级的错误,如OutOfMemoryError(内存溢出)、StackOverflowError(栈溢出)这些错误,当出现这些错误时基本是系统问题,基本不能通过捕获去恢复,所以不要求捕获或声明。此时可以由它抛出异常然后记录下来,事后分析。

Exception

Exception其实也分为两类异常

不受检查异常(RuntimeException)

不受检查异常即是RuntimeExceptionRuntimeException的子类,如NullPointerException(空指针异常)、ArrayIndexOutOfBoundsException(数组下标越界异常)、IllegalArgumentException(非法参数异常)。这类异常不要求try catch捕获或throws声明抛出,因为出现此类异常通常是由于代码问题,如果任由程序运行下去可能会出现意想不到后果,所以不应该捕获处理试图恢复。

受检查异常

受检查异常即除了RuntimeExceptionException类和Exception下的子类,如InterruptedExceptionIOException。出现此类异常必须在编译前捕获或声明抛出,否则编译不通过。此类异常通常是可以捕获并有效处理所以不能忽略。

2. 注意

  1. 只针对异常的情况使用异常机制,不应该将他们用于正常的控制流
  2. 对可恢复的情况使用受检查异常,对编程错误使用运行时异常
  3. 避免不必要地使用受检查异常
  4. 优先使用标准的异常(JDK中的异常)
  5. 不要忽略异常