【发布时间】:2011-08-17 12:56:14
【问题描述】:
我目前正在审查同事的 Java 代码,我看到很多情况下,每个可能引发异常的语句都被封装在自己的 try/catch 中。 catch 块都执行相同的操作(哪个操作与我的问题无关)。
对我来说,这似乎是一种代码味道,我确实记得读过它是一种常见的反模式。但是我找不到任何关于此的参考。
那么,对于每个抛出异常的语句,try/catch 是否都被视为反模式,支持这一点的论据是什么?
构造示例: (与原始问题无关,因此请不要介意此示例的其他问题,因为它只是为了说明我的意思。)
public int foo()
{
int x, y = 7;
try
{
x = bar(y);
}
catch(SomeException e)
{
return 0;
}
try
{
y = baz(x,y);
}
catch(SomeOtherException e)
{
return 0;
}
/* etc. */
return y;
}
(假设在这里捕获两个异常是适当的,即我们知道如何处理它们,适当的事情是在两种情况下都返回 0。)
【问题讨论】:
-
编写示例似乎很明显这是一种反模式。但是,我仍然想要一个很好的来源或论据。
标签: java exception exception-handling anti-patterns