java中try-catch先执行try块,无异常则跳过catch;有匹配异常则立即中断try并进入对应catch,后续try代码不执行;catch参数须为throwable子类,多catch时子类须在父类前;try后可只跟finally;运行时异常应修复而非捕获,检查型异常必须处理。
try-catch 基本写法和执行顺序
Java 中 try-catch 不是“出了错才走”,而是先执行 try 块,如果没异常就跳过所有 catch;一旦抛出匹配的异常,立刻中断当前 try 流程,进入对应 catch 块,后续 try 代码不再执行。
常见误操作:在 catch 里漏写 throw 或 return,结果程序继续往下跑,看似“捕获了”,实则逻辑断裂。
-
catch参数必须是Throwable的子类,不能写catch (int e)这类非法类型 - 多个
catch时,子类异常要写在父类前面,否则编译报错:Unreachable catch block -
try后面可以不跟catch,但必须跟finally(或两者都跟)
何时该用 try-catch,何时不该用
不是所有异常都适合捕获。运行时异常(RuntimeException 及其子类,如 NullPointerException、ArrayIndexOutOfBoundsException)通常反映代码逻辑缺陷,应修复而非捕获;而检查型异常(IOException、SQLException 等)必须处理——要么 catch,要么在方法签名加 throws。
典型反例:对 list.get(100) 包一层 try-catch 来避免 IndexOutOfBoundsException,不如提前 if (list.size() > 100) 判断。
立即学习“Java免费学习笔记(深入)”;