Photo by Lorem Ipsum
523 words
3 minutes
Java SE 系列(五):异常处理体系
Java SE 教程
Posts in this series (10)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/