Java 常见异常

所有的异常都是 Throwable 的子类,分为 Error(错误) 和 Exception (异常)。
Java 常见异常

Error

Error 是程序无法处理的错误。
Error 是 Java 运行时系统的内部错误和资源耗尽错误,例如 *Error(堆栈溢出错误)、Virtual MachineError(JVM 运行错误)、OutOfMemoryError(内存溢出错误),这些异常发生时,JVM 一般会选择线程终止。

Exception

Exception 是程序本身可以处理的异常。
Exception 分为受检异常非受检异常受检异常要显式处理,否则编译出错,非受检异常是运行时异常,继承 RuntimeException。

  • 受检异常:需要用 try…catch…语句捕获并进行处理,并且可以从异常中恢复。
  • 常见的受检异常:(1)无能为力型,如字段超长导致的 SQLException。(2)力所能及型,如未授权异常 UnAuthorizedException,程序可跳转权限申请页面,常见的受检异常还有 FileNotFoundException、ClassNotFoundException、IOException等。
  • 非受检异常:是程序运行时错误,例如除 0 会引发 ArithmaticException ,此时程序崩溃并且无法恢复。(1)可预测异常,例如 IndexOutOfBoundsException、NullPointerException、ClassCastException等,这类异常应该提前处理。(2)需捕捉异常,例如进行 RPC 调用时的远程服务超时,这类异常应该提前处理。

Java 常见异常
Exception 类有一个重要的子类 RuntimeExceptionRuntimeException异常由 Java 虚拟机抛出。
NullPointerException、ClassCastException、IndexOutOfBoundsException(数组下标越界异常)、ArithmaticException(算数运算异常)、NoSuchElementException(线程访问越界异常)。