java异常处理中,try块必先执行,有异常则跳转匹配catch并默认继续执行后续代码;catch按类型顺序匹配,子类需在父类前;应为独立操作分别封装try-catch以避免相互影响。

try块中抛出异常后,程序不会直接终止,而是立即跳转到匹配的catch块执行处理逻辑;处理完毕后,默认继续执行catch之后的代码——这是Java异常机制保障流程可控的关键设计。
try一定是先执行的入口
所有受保护的代码必须放在try块里,它不是“可能执行”,而是“一定先运行”。哪怕只有一行正常语句,也会先执行完(或执行到出错那行为止),才决定是否进catch。
- 没异常:try内全部语句顺序执行,跳过所有catch,接着运行后续代码
- 有异常:从抛出异常的那一行起,try中剩余语句立刻停止,不再执行
- 异常位置很关键:比如int a = 1 / 0;出错,它后面的System.out.println("B");就不会打印
catch是按类型匹配的跳转目标
catch不是通用回收站,只接收声明类型能匹配的异常。JVM按顺序检查每个catch,找到第一个兼容的就进去,其余跳过。
- 子类异常要写在父类前面,例如FileNotFoundException必须在IOException之前
- 一个try可跟多个catch,但每次最多只进其中一个
- 如果没写catch,或写了但类型不匹配,异常会向上抛出,后续代码不执行
捕获后程序默认继续往下走
只要异常被正确捕获并处理,catch块执行完,控制流就会自然落到catch之后的第一行代码上。
- 示例中System.out.println("继续执行");一定会输出,哪怕前面是1/0
- 注意例外:若catch里写了return、throw或System.exit(),则会中断后续流程
- 这种“捕获即恢复”的特性,适合做容错操作,比如单条数据库插入失败不影响其他记录处理
避免全局大try带来的流程中断
想让多个独立操作互不影响,不要用一个try包住全部;应把每个易出错操作单独封装,各自配try-catch。
- 错误写法:一个try里连续调用三次insert(),中间一个失败,后面两个就跳过
- 正确做法:为每次insert()写独立的try-catch,失败只影响当前项
- 推荐封装成工具方法,如safeInsert(...),内部处理异常并返回结果状态
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











