当尝试时,最后使用组合,如果有一个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.");
}
}
}
在上面的代码中,请告诉我执行的流程.我知道最终将在try块之后强制执行.但是在try块中,返回staatement会将控件带到主类.在那种情况下,控制将如何最终阻止?
解决方法:
你是什么意思“第一”?
最终在执行之前运行离开方法.什么时候应该运行?毕竟,它是该方法的一部分.
但如果你有
int x = 1;
try{
return x;
} finally {
x = x + 1;
}
然后该方法仍将返回1.因此,return语句确实在finally块之前以某种方式执行(以确定返回值).
如果问题是为什么finally块一直被执行,那就是它们的用途:在“try”块完成之后“终于”运行,无论如何.
But in try block, return statement will take the control to main class. In that case how will the control come to finally block?
怎么样?嗯,这就是语言(和运行时)的工作方式.
在将控制流返回给调用方法之前,执行finally块.
它在技术上甚至可以选择更改返回值(通过拥有自己的return语句),但这是非常不鼓励的.
标签:java,return,try-catch,finally
来源: https://codeday.me/bug/20191003/1848090.html