【发布时间】:2016-04-24 06:07:25
【问题描述】:
看看下面的代码。尽管 catch 子句本身会引发异常,但 finally 块的 return 语句会导致该异常被吞没。即使在 catch 块中出现问题,此方法也会返回 420。
private static int foo() throws Exception
{
try {
throw new Exception("try");
} catch (Exception ex) {
throw new Exception("catch");
} finally {
String s = "";
return 420;
}
}
【问题讨论】:
-
你已经描述了它的作用,你还有什么问题?危险吗?
Exceptions 危险吗? -
在此上下文中定义“危险”。您显示的内容是合法的,如果将 return 语句放在 try/catch/finally 之后,则结果相同。这样做没有坏处,那么你问它是否“危险”是什么意思?
-
有什么意义?如果您抛出异常,则调用将无法中断它。
-
我的观点与观点相同,即这个问题被标记为重复关闭。但我想如果他们认为这个问题很愚蠢,这里有太多人太急于羞辱一个人。尽管很多时候问题不是愚蠢的。根据重复问题中的答案,是的,在 finally 子句中添加 return 是一种不好的做法。