Java异常处理通过try-catch-finally捕获处理异常,throws声明异常,throw主动抛出异常,确保程序健壮性与资源安全释放。

Java中的异常处理机制帮助程序在出现错误时仍能正常运行或优雅退出。核心是通过try-catch-finally结构捕获并处理异常,同时可以使用throw和throws关键字主动抛出或声明异常。
使用try-catch捕获异常
当某段代码可能引发异常时,应将其放在try块中,并用catch块捕获特定类型的异常。
- try块中放置可能出错的代码
- catch块用于处理对应异常,可多个catch捕获不同异常类型
- 异常从上到下匹配,子类异常应放在前面
示例:
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("发生算术异常:" + e.getMessage());
}
finally块确保资源清理
无论是否发生异常,finally块中的代码都会执行,常用于释放资源,如关闭文件或网络连接。
立即学习“Java免费学习笔记(深入)”;
- finally在catch之后执行
- 即使try或catch中有return语句,finally仍会执行
- 若方法提前退出(如System.exit),finally不会执行
示例:
try {
// 可能出错的操作
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("清理资源");
}
使用throws声明异常
如果方法不处理异常,可用throws将异常向上抛出,由调用者处理。
- 适用于检查型异常(checked exception)
- 多个异常用逗号分隔
- 调用该方法的代码必须处理这些异常
示例:
public void readFile() throws IOException {
FileReader file = new FileReader("test.txt");
}
主动抛出异常(throw)
在特定条件下,可通过throw语句手动抛出异常。
- throw后面跟一个异常对象
- 常用于参数校验或业务逻辑不符合预期时
- 可抛出系统异常或自定义异常
示例:
if (age < 0) {
throw new IllegalArgumentException("年龄不能为负数");
}
基本上就这些。掌握try-catch-finally结构、理解throw与throws的区别,就能应对大多数基础异常处理场景。关键是根据异常类型合理选择处理方式,避免吞掉异常或过度抛出。










