【发布时间】:2015-09-07 16:17:15
【问题描述】:
这是一个面试问题:
public class Demo {
public static void main(String[] args) {
System.out.println(foo());
}
static String foo() {
try {
return "try ...";
} catch (Exception e) {
return "catch ...";
} finally {
return "finally ..."; //got as result
}
}
}
我的问题是为什么没有编译时错误。当我的 finally 块中有 return 语句时,它一定会从 finally 而不是 try 和 catch 块返回。我试图用-Xlint 选项编译这段代码,它给出了一个警告。
warning: [finally] finally clause cannot complete normally
【问题讨论】:
-
您认为这会破坏 Java 规范中的哪种语言,这会导致错误?
标签: java compiler-errors return try-catch try-catch-finally