java中try必须搭配catch或finally之一,不可单独使用;只写try编译报错;try+catch、try+finally、try+catch+finally均合法,执行顺序固定为try→catch(异常时)→finally。

Java中try语句必须至少搭配catch或finally之一,不能单独存在;catch和finally也不能脱离try独立使用。省略任一部分是否合法,取决于语法结构和编译器检查规则。
只保留 try —— 编译错误
try块不能单独出现,哪怕里面写了有效代码,也会在编译时报错:‘try’ without ‘catch’, ‘finally’, or resource declarations。
例如:
try {
System.out.println("hello");
} // ❌ 编译失败
try + catch —— 合法(finally 可省略)
这是最常见形式,finally完全可选。只要至少有一个catch块捕获异常,就满足语法要求。
- 可以有多个
catch(按异常类型顺序排列,子类在前) -
catch参数必须是Throwable的子类,且不能重复捕获同一类型 - 若
catch中未处理完异常(如重新抛出),不影响语法合法性
try + finally —— 合法(catch 可省略)
即使不关心具体异常类型,也可用finally确保资源清理或收尾动作执行。
-
finally一定会执行(除非JVM退出、线程被杀死、或System.exit()等极端情况) - 若
try中抛出未被捕获的异常,finally仍会执行,之后异常继续向上抛 - 注意:如果
finally中也抛异常或执行return,可能掩盖try中的异常或返回值
try + catch + finally —— 完整组合,全部保留
三者共存时,执行顺序固定:try → catch(若发生匹配异常)→ finally;无异常则try → finally。
-
catch和finally的顺序不可交换,否则编译报错 - 一个
try后可跟多个catch,但最多一个finally - Java 7+ 支持带资源的
try-with-resources,此时finally可省略,但那是另一套语法机制
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











