在 Java 中,异常分为两种主要类型:受检异常(Checked Exceptions)和非受检异常(Unchecked Exceptions)。
受检异常(Checked Exceptions):
- 受检异常是在编译时强制检查的异常,必须在代码中显式地处理或声明抛出。
- 这些异常一般是可预见的、外部因素引起的问题,比如文件不存在、网络连接失败等。
- 如果一个方法可能抛出受检异常,可以使用
throws
关键字在方法声明中列出可能抛出的异常,或者在方法内部使用try
…catch
块处理异常。 - 受检异常的子类必须明确处理或传递给调用者。
示例:
public void readFile(String filename) throws FileNotFoundException {
// 代码可能抛出 FileNotFoundException
// ...
}
非受检异常(Unchecked Exceptions)也称为运行时异常(Runtime Exceptions):
- 非受检异常是在运行时才会被检查的异常,不需要在代码中强制处理或声明抛出。
- 这些异常通常是程序逻辑错误,比如除以零、访问数组越界等。
- 非受检异常在代码中不需要显式捕获或声明,但可以使用
try
…catch
块来捕获并处理,以避免程序崩溃。 - 非受检异常的子类不要求强制处理或传递给调用者。
示例:
public void divide(int numerator, int denominator) {
if (denominator == 0) {
throw new ArithmeticException("除数不能为零");
}
int result = numerator / denominator;
}
总结:
- 受检异常是在编译时检查的异常,必须处理或声明抛出。
- 非受检异常是在运行时检查的异常,不要求强制处理或声明抛出,但建议进行捕获和处理以保证程序稳定性。