Java异常体系架构图
如下图是Java异常体系的架构图。

Throwable的两个子类
-
Error:是程序中无法处理的错误,代表程序在运行中出现了严重的错误。表示程序代码运行中虚拟机出现问题,例如虚拟机内存耗尽等。发生Error,Java虚拟机将终止线程。因为这种错误不是代码编译或逻辑产生的错误,所以程序中不应该主动去处理Error。
-
Exception:程序本身可以捕获和处理的异常。
Exception的两个子类
-
RuntimeException运行时异常:是在程序运行时出现的异常,比如数组下标越界等,这类异常只有在程序运行时才会发现。也称为不受检异常,因为在程序中可以不显式的定义catch语句块去尝试捕获处理,编译器也可以编译通过。
-
Compile-Time Exception编译异常:程序会显式定义抛出此类异常,调用者必须对异常进行处理,显式定义try-catch或者用throws继续向上抛出,否则编译器不能通过编译。所以也称为受检异常,编码中我们最常使用到这类异常,自定义需要抛出的异常,交由调用方根据业务逻辑进行处理。
网友评论