尝试,最后在try块中返回执行流程

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会将控件带到主类.在那种情况下,控制将如何最终阻止?

Thi*_*ilo 7

你是什​​么意思"第一"?

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语句),但这是非常不鼓励的.