- Error 与 Exception
Error 是程序无法处理的错误,比如 OutOfMemoryError、ThreadDeath 等。这些异常发生时,JVM 一般会选择线程终止
Exception 是程序本身可以处理的异常,这种异常分两大类:运行时异常和非运行时异常。程序中应当尽可能去处理这些异常。
- 运行时异常和非运行时异常
运行时异常都是 RuntimeException 类及其子类异常,如 NullPointerException、IndexOutofBoundsException 等,这些异常是不检查异常,程序可以选择捕获处理,也可以不处理。这些异常一般是由于程序逻辑异常引起的,程序应该从逻辑角度尽可能避免这类异常的发生
非运行时异常是 RuntimeException 以外的异常,是受检查的异常,其必须被 try{}catch 语句块所捕获,或者在方法签名里通过 throw 语句声明。受检查的异常必须在编译时被捕捉处理。如果不处理,程序就不能编译通过。如 IOException、SQLException 等以及用户自定义的 Exception 异常,一般情况下不自定义受检查异常。