我知道finally
的目的是保证某些指令或清理代码得到执行。但是finally
在 catch 块之后使用或放置代码的实际区别是什么。
我的意思是,给我一个你需要使用的例子,finally
否则代码可能根本无法执行。
问问题
74 次
5 回答
4
无论 catch 块中发生了什么,finally 都会执行。存在几种情况。
catch(Exception E)
{
...
throw new OtherException(BetterMessage, E);
}
或者
catch { return null; }
或者
catch { SomeMethodThatWillThrowAnException(); }
因此,即使您返回或抛出异常以退出 Catch 块,您仍将执行 finally 块,而仅在 try-catch 之后的任何代码都将被忽略。
于 2014-05-22T20:45:13.137 回答
1
无论如何,最终都会执行。
一个例子
public void test() {
try {
int x = 0;
return;
} catch(Exception ex) {
ex.printStackTrace();
} finally {
System.out.println("Hello from finally");
}
System.out.println("Hello from after catch");
}
在这种情况下,不会打印“Hello from after catch”,但会打印“Hello from finally”。
于 2014-05-22T20:50:08.990 回答
0
可能会发生一些您不会捕获的异常。finally
即使抛出意外异常,块也能保证执行其中的代码。
于 2014-05-22T20:50:05.227 回答
0
finally
无论是否抛出异常,都会执行该块。
您的问题是,在block之后使用和放置代码有什么区别finally
catch
。如果抛出异常,catch
则不会执行该块之后的代码。如果您将代码放在finally
块中,它会。
于 2014-05-22T20:43:53.037 回答
0
无论如何,finally 块都会触发,即使你投掷和接球也是如此。不在 finally 块中的 catch 之后放置的代码可能不会执行,例如,如果您的 catch 可能导致进程结束或应用程序崩溃。
于 2014-05-22T20:42:23.767 回答