当前位置: 首页 > 面试题库 >

捕获和最终返回语句的行为

严书
2023-03-14
问题内容

请参见以下代码,并解释输出行为。

public class MyFinalTest {

    public int doMethod(){
        try{
            throw new Exception();
        }
        catch(Exception ex){
            return 5;
        }
        finally{
            return 10;
        }
    }

    public static void main(String[] args) {

        MyFinalTest testEx = new MyFinalTest();
        int rVal = testEx.doMethod();
        System.out.println("The return Val : "+rVal);
    }

}

结果是返回Val:10。

Eclipse显示警告:finally block does not complete normally

catch块中的return语句会怎样?


问题答案:

它被中的一个覆盖finally,因为finally它在所有其他操作之后执行。

这就是为什么,经验法则- 永不从回归finally。例如,Eclipse显示了该代码段的警告:“最终阻止无法正常完成”



 类似资料:
  • 问题内容: 我正在扩展Chrome。好。将tampermonkey脚本转换为chrome扩展程序。我运行它,并在chrome控制台中给出以下错误: 是什么导致此问题? 尝试将我的代码包装在IIFE代码中: 尝试IIFE方法时出现以下错误: 问题答案: 你不能返回,除非你在一个函数中 您可以将所有代码包装在IIFE中 或者

  • 我有一个返回< code>List的方法。现在我想知道如何正确放置< code>try/catch块。如果我将< code>return语句放在< code>try中,我会得到错误 并非所有代码路径都返回值 如果我放置在之后(就像我目前所做的那样),即使在之后,它也会返回。那么最好的方法应该是什么? 方法如下:

  • 我想要能够让我的catch请求用户输入文件名,直到文件名有效为止,有没有人能给我一个建议,如何安排我的代码做到这一点? 导入java.io.FileNotFoundException;导入java.util.scanner; public class Requierment2{public static void main(String[]args){ }

  • 我正在查看Java SE7的新功能,目前我正在: http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html 关于捕获多重功能,当我遇到这个语句时: 注意:如果一个捕捉块处理多个异常类型,那么捕捉参数是隐式最终的。在这个例子中,捕捉参数ex是最终的,因此您不能在捕捉块中给它赋值。 我从未注意到

  • 我有一些代码现在看起来有点像这样: 如您所见,我目前正在将对的调用包装在语句中,因为该函数可能会失败(它依赖于外部web服务调用)。 我的问题是:语句应该是a)在问题函数之外(就像我现在看到的那样)还是b)在问题函数内部? 谢谢。

  • 问题内容: 考虑到此代码,我是否可以 绝对确定 该块始终执行,无论它是什么? 问题答案: 是的,将在执行或代码块后调用。 唯一不会被调用的时间是: 如果您调用 如果您调用 如果JVM首先崩溃 如果JVM在或块中达到了无限循环(或其他不间断,不终止的语句) 操作系统是否强行终止了JVM进程;例如,在UNIX上 如果主机系统死机;例如,电源故障,硬件错误,操作系统崩溃等 如果该块将由守护程序线程执行并