Sai*_*ran 1 java return finally try-catch
当尝试时,最后使用组合,如果有一个return语句,请尝试.为什么最后是块执行?
class Palindrome
{
public static void main(String args[])
{
System.out.println(Palindrome.test());
}
public static int test()
{
try {
//return 0;
return 100;
}
finally {
System.out.println("finally trumps return.");
}
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,请告诉我执行的流程.我知道最终将在try块之后强制执行.但是在try块中,返回staatement会将控件带到主类.在那种情况下,控制将如何最终阻止?
你是什么意思"第一"?
finally执行前的运行离开了方法.什么时候应该运行?毕竟,它是该方法的一部分.
但如果你有
int x = 1;
try{
return x;
} finally {
x = x + 1;
}
Run Code Online (Sandbox Code Playgroud)
那么该方法仍将返回1.因此return语句确实在finally块之前以某种方式执行(以确定返回值).
如果问题是,为什么在执行finally块可言,好,这是它们的用途:以"最后"的"尝试"块后运行完成后,不管是什么.
但是在try块中,return语句会将控件带到主类.在那种情况下,控制将如何最终阻止?
怎么样?嗯,这就是语言(和运行时)的工作方式.
在将控制流返回给调用方法之前,执行finally块.
它在技术上甚至可以选择更改返回值(通过拥有自己的return语句),但这是非常不鼓励的.
| 归档时间: |
|
| 查看次数: |
2388 次 |
| 最近记录: |