523 words
3 minutes
Java SE 系列(五):异常处理体系

AI 智能总结

Java SE 5 异常处理体系#

异常是程序运行中出现的非正常情况,Java 提供一套规范机制处理错误,避免程序直接崩溃。本文精讲编译 / 运行异常、try-catch-finally、throws、自定义异常,搭配极简代码,快速吃透核心。

一、异常分类#

编译时异常(受检异常)#

Exception 除运行时异常外的子类,编译必须处理,否则代码无法通过编译,例如文件、IO 异常。

运行时异常(非受检异常)#

RuntimeException 及其子类,编译不报错、运行才崩溃,如空指针、数组越界、类型转换异常,日常开发最常见。

二、try-catch-finally 捕获异常#

主动捕获并处理异常,保证程序继续运行。 try:存放可能出错的代码
catch:捕获异常并处理
finally:无论是否异常都会执行,常用于资源关闭

public class ExceptionDemo {
public static void main(String[] args) {
try {
int a = 1 / 0;
} catch (ArithmeticException e) {
// 捕获数学运算异常
System.out.println("运算出错:除数不能为0");
} finally {
System.out.println("代码执行完毕");
}
}
}

三、throws 抛出异常#

不就地处理异常,向上抛给调用者处理,多用于工具方法。 编译时异常必须声明 throws,运行时异常可省略。

// 抛出编译异常
public static void readFile() throws Exception {
// IO 操作逻辑
}

四、自定义异常#

业务场景原生异常无法满足时,自定义异常类,规范业务报错信息。 继承 Exception:自定义编译异常
继承 RuntimeException:自定义运行异常

// 自定义业务运行异常
class AgeException extends RuntimeException {
public AgeException(String msg) {
super(msg);
}
}
// 测试使用
public static void checkAge(int age) {
if (age < 0) {
throw new AgeException("年龄非法");
}
}

核心要点总结#

运行异常日常频发,编译异常必须手动处理。
可控异常用 try-catch 捕获,工具方法统一用 throws 上抛。
finally 专属资源释放场景,是代码收尾核心保障。
自定义异常用于区分业务错误,让报错精准可控。

Java SE 系列(五):异常处理体系
https://fuwari.vercel.app/posts/java-se-series/java-se-05-exception/
Author
Zero02
Published at
2025-02-02
License
CC BY-NC-SA 4.0