【发布时间】:2014-03-05 13:09:25
【问题描述】:
我运行这段代码:
public static void main(String[] args) {
System.out.println(catcher());
}
private static int catcher() {
try {
System.out.println("TRY");
thrower();
return 1;
} catch (Exception e) {
System.out.println("CATCH");
return 2;
} finally {
System.out.println("FINALLY");
return 3;
}
}
private static void thrower() {
throw new RuntimeException();
}
我希望在输出中看到这个:
TRY
CATCH
FINALLY
2
但令人惊讶的是输出是:
TRY
CATCH
FINALLY
3
我很困惑。 return 2 声明在哪里? return at finally 是个坏习惯吗?
【问题讨论】:
-
finally将被总是调用(如果没有崩溃)。 -
在我点击你的问题之前,只看到标题,我就知道我会在你的
finally块中找到return。纳夫说。 -
finally 块总是被执行,不管 try 或 catch 块中发生了什么。
-
@MarkoTopolnik 这里也一样 :)