最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Java异常处理怎么学?一文详细说明trycatchfinally使用技巧
时间:2026-08-06 07:38:50 编辑:袖梨 来源:一聚教程网
Java异常处理怎么学?一文详细说明trycatchfinally使用技巧需要先看清适用场景和关键步骤,避免只记结论却忽略实际限制。
一、什么是异常
程序运行时出现非正常情况,打断正常执行流程。语法没错才叫异常;语法写错属于编译错误,不算异常。

二、异常体系(顶层:Throwable)
- Error 错误 虚拟机严重问题,程序无法处理,不用捕获。例:栈溢出、内存溢出 OOM。
- Exception 异常(我们要处理)
- 受检异常(编译异常):编译强制要求处理,要么 try-catch 捕获,要么 throws 抛出。例:IO 异常、文件不存在、线程睡眠异常。
- 运行时异常(RuntimeException):编译不报错,运行才出问题,大多是代码 bug,可处理可不处理。 常见:空指针、数组越界、除数为 0、类型强转异常、非法参数。
三、五个关键字用法
- try:包裹可能出错的代码
- catch:捕获对应异常并处理
- finally:无论是否异常基本都会执行,用来关闭流、释放资源;只有
System.exit()终止 JVM 时不执行 - throws:写在方法后面,声明该方法可能抛出异常,把异常交给调用方处理
- throw:方法内部手动主动抛出一个异常对象
throw vs throws
- throws:声明异常,被动报备
- throw:抛出异常,主动制造报错
四、多 catch 规则
多个 catch 时,子类异常必须写在父类前面,否则父类先匹配,后面子类永远走不到,编译报错。
五、自定义异常
业务场景专用,一般继承 RuntimeException,不用强制声明 throws,方便全局统一处理报错信息。
运行
public class MyBizException extends RuntimeException { public MyBizException(String msg) { super(msg); }}六、写代码小规范
- 别写空 catch,至少打印异常信息方便排错
- 尽量捕获具体异常,不要无脑直接捕获 Exception
- 别用异常代替 if 判断做逻辑校验,损耗性能
- JDK7 + 可用 try-with-resources 自动关闭流,替代手写 finally 关资源
七、注意事项
- Error 不可处理,Exception 可处理
- 编译异常必须处理,运行时异常可不处理
- finally 绝大多数情况必执行
- throw 抛异常,throws 声明异常