跳到主要内容

异常处理

异常处理是 Java 健壮性的核心机制,所有异常都继承自 java.lang.Throwable,形成一棵类型树。

Throwable 体系

Throwable 有两个直接子类。Error 表示严重错误,如 OutOfMemoryErrorStackOverflowError,程序一般无法恢复。Exception 表示可处理的异常情况,又分为**受检(checked)非受检(unchecked)**两类。

受检与非受检异常

受检异常(如 IOExceptionSQLException)在编译期强制处理,必须 try-catch 或在方法签名 throws。非受检异常继承自 RuntimeException(如 NullPointerExceptionIllegalArgumentException),编译期不强制处理,通常代表程序错误。

try-catch-finally 与 try-with-resources

try-catch-finally 用于捕获并清理资源。finally 块始终执行,适合关闭流与连接。Java 7 引入的 try-with-resources 语法可自动关闭实现了 AutoCloseable 的资源,代码更简洁。

try (BufferedReader br = new BufferedReader(new FileReader("a.txt"))) {
return br.readLine();
} catch (IOException e) {
throw new UncheckedIOException(e);
}

自定义异常

业务层通常定义受检异常表示可恢复问题,或运行时异常表示编程错误。构造时传递错误消息,必要时保留原始异常作为 cause,便于定位根因。