try {
doSomething()
doSomethingElse()
}
catch(Exception e) {}
如果doSomething()
引发异常,doSomethingElse()
会被执行吗?如果没有,有没有办法让它被执行(但如果doSomethingElse
抛出相同的异常,仍然捕获它)?
不,控件跳转到 catch 子句。
这是您可以轻松地自己测试的东西...
public void doSomethingThatThrowsAnException() throws Exception {
throw new Exception();
}
try {
System.out.println("Before");
doSomethingThatThrowsAnException();
System.out.println("After");
} catch(Exception e) {
System.out.println("Caught");
}
指纹。。。
Before
Caught
如果在doSomething()
中抛出异常,则不会执行doSomethingElse()
。如果在try
块中引发异常,则接下来执行catch
块。无论是否引发异常,finally
块都将始终执行,通常用于清理资源。