【发布时间】:2015-06-14 08:42:51
【问题描述】:
我在一个java认证网站找到了这段代码
public class Test1{
public static void main(String args[]){
System.out.println(method());
}
public static int method(){
try{
return 1;
}
catch(Exception e){
return 2;
}
finally{
return 3;
}
}
}
所以这段代码的输出显示为 3。 这怎么可能..因为它在 try 块本身中返回 1 ? 代码永远不会到达finally吧??
【问题讨论】:
-
一个
finally块将总是被执行;但是returning infinally是……呃。基本上,这是“不要那样做”的事情 -
@fge 解释得很好
-
您还没有尝试阅读有关
finally块行为的信息,对吧?例如:docs.oracle.com/javase/tutorial/essential/exceptions/… -
另外,如果您出于某种原因实际上正在考虑以这种方式构建代码,那么相关的并且是一本好书:stackoverflow.com/questions/48088/…