Java 异常处理(Exception Handling) 是 Java 提供的一种机制,用来捕获、处理程序运行过程中出现的错误或异常情况,防止程序直接崩溃,提高程序的健壮性和可维护性。
在程序运行中,可能会出现各种问题,例如:
如果不处理这些异常,程序会直接终止。
异常处理的目的:
✅ 让程序继续运行或优雅地退出
✅ 给出错误提示
✅ 方便定位问题
✅ 提高代码可读性和可维护性
Java 中,所有异常和错误都继承自 java.lang.Throwable:
Throwable
├── Error(严重错误,一般不处理)
│ ├── OutOfMemoryError
│ └── StackOverflowError
│
└── Exception(异常,需要处理的)
├── RuntimeException(运行时异常)
│ ├── NullPointerException
│ ├── ArrayIndexOutOfBoundsException
│ └── ArithmeticException
│
└── 非 RuntimeException(受检异常,必须处理)
├── IOException
├── SQLException
└── FileNotFoundException
| 类型 | 说明 | 是否必须处理 |
|---|---|---|
| Error | JVM 错误,程序无法恢复 | 否 |
| RuntimeException | 运行时异常 | 否 |
| 受检异常(Checked Exception) | 编译期要求处理 | 是 |
Java 使用五个关键字处理异常:
try用于包裹可能抛出异常的代码
try {
int a = 10 / 0;
}
catch用于捕获并处理异常
catch (ArithmeticException e) {
System.out.println("除零错误");
}
✅ 可以多个 catch
✅ 捕获范围小的异常放前面
finally无论是否发生异常都会执行(常用于释放资源)
finally {
System.out.println("一定会执行");
}
throw手动抛出一个异常
throw new RuntimeException("出错了");
throws声明方法可能抛出的异常
public void test() throws IOException {
}
public class Test {
public static void main(String[] args) {
try {
int a = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("算术异常:" + e.getMessage());
} finally {
System.out.println("程序结束");
}
}
}
输出:
算术异常:/ by zero
程序结束
import java.io.*;
public class Test {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("a.txt");
}
}
catch (Exception e) {
e.getMessage(); // 获取异常信息
e.printStackTrace(); // 打印异常堆栈
}
class AgeException extends Exception {
public AgeException(String msg) {
super(msg);
}
}
使用:
if (age < 0) {
throw new AgeException("年龄不能为负数");
}
✅ 不要吞掉异常(空 catch)
✅ 捕获具体异常,而不是 Exception
✅ 资源使用 try-with-resources
✅ 异常信息要清晰
✅ 不要用来控制正常业务逻辑
try (FileReader fr = new FileReader("a.txt")) {
// 使用资源
} catch (IOException e) {
e.printStackTrace();
}
Java 异常处理是一种用于捕获和处理程序运行时错误的机制,通过 try、catch、finally、throw 和 throws 保证程序稳定、可控地运行。
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。