检查型异常Checked Exception与非检查型异常Unchecked Exception
检查型异常Checked Exception与非检查型异常Unchecked Exception是Java异常处理中的两大类,它们之间有着明显的区别。
检查型异常Checked Exception
检查型异常Checked Exception也称为受检异常,是指在编译期间需要检查和处理的异常。它是Java语言规范定义的,必须显式捕获或抛出的异常,它是Java语言的一部分,它们是Throwable的子类,并且不是RuntimeException的子类。
try {
// 代码
} catch (CheckedException e) {
// 处理异常
}
检查型异常Checked Exception的特点是:在编译期间,如果程序抛出了检查型异常,必须要捕获处理,否则程序将无法编译通过;在运行期间,如果程序抛出了检查型异常,必须要捕获处理,否则程序将会终止运行。
非检查型异常Unchecked Exception
非检查型异常Unchecked Exception也称为未受检异常,是指在编译期间不需要检查和处理的异常。它是Java语言规范定义的,不需要显式捕获或抛出的异常,它是Java语言的一部分,它们是Throwable的子类,并且是RuntimeException的子类。
非检查型异常Unchecked Exception的特点是:在编译期间,如果程序抛出了非检查型异常,不需要捕获处理,程序可以编译通过;在运行期间,如果程序抛出了非检查型异常,不需要捕获处理,程序也可以继续运行。
异同点
- 相同点:都是Java语言规范定义的,都是Throwable的子类。
- 不同点:检查型异常Checked Exception不是RuntimeException的子类,而非检查型异常Unchecked Exception是RuntimeException的子类;在编译期间,检查型异常Checked Exception必须要捕获处理,而非检查型异常Unchecked Exception不需要捕获处理;在运行期间,检查型异常Checked Exception必须要捕获处理,而非检查型异常Unchecked Exception不需要捕获处理。