请参见以下代码,并解释输出行为。
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上 如果主机系统死机;例如,电源故障,硬件错误,操作系统崩溃等 如果该块将由守护程序线程执行并