Java Throwable体系

本篇对Java Throwable体系进行梳理,同时讨论下try-catch和return的执行顺序。

Throwable体系

Throwable体系

Exception和Error

因为在java中,能通过代码处理的我们叫做Exception,而我们不能处理的叫做Error。

Error指的是那些例如:JVM运行错误,栈空间用尽,类定义错误等等非常严重的问题。一旦出现错误,我们不能通过代码进行处理,所以编码要注意避免Error。

Exception我们是可以通过try-catch处理的,即使发生了Exception我们也可以通过适当的处理来保持程序正常的运行。

运行时异常(RuntimeException)和非运行时异常

运行时异常是没办法预料的,例如NullPointerException,IndexOutOfBoundsException,ClassCastException,OutOfMemoryException,IllegalArgumentException 等等,编译器发现不了也不会提醒,只有在运行期才会出现,不过我们可以主动try-catch来处理异常。

非运行时时显而易见可能会出错的,编译器会提前提醒我们要对非运行时异常进行处理,try-catch或者声明throws都可以,例如IOException,FileNotFoundExcetion,SQLException,NoSuchMethodException ,InvocationTargetException等等。

我们在throw Exception的时候,如果throw的是RuntimeExcepiton,那么编译器不会提醒我们进行任何处理,但若是非运行时异常则会提醒我们try-catch或者声明throws。

try-catch和return

不管是在try中return,还是在catch中return,都会在return之前执行finally的代码。

return要是返回一个表达式,则会在表达式运算完成之后才执行finally的代码。

若在finally之中有return,则直接return。

注意throw Exception的时候是直接返回,其它什么代码都不会执行的。

还有System.exit(0)也是什么都不执行的,虚拟机都退出了。

文章目录
  1. 1. Throwable体系
  2. 2. Exception和Error
  3. 3. 运行时异常(RuntimeException)和非运行时异常
  4. 4. try-catch和return
|