这是在 Java 6 上
我可以有一个通用的方法来处理我的异常吗?而不是在每个方法中都这样做 n 次
try {
// Do something
} catch (XException e) {
// Do something
} catch (YException e) {
// Do something
} catch (ZException e) {
// Do something
}
我有
try {
// Do something
} catch (Exception e) {
handleAll (e);
}
方法handleAll(e)
做
if e.instanceOf(XException)
else if e.instanceOf(YException)
else if e.instanceOf(ZException)
第二种方法有什么问题吗?
更新:
我最初的问题是关于在一个地方为检查异常和运行时异常“集中处理”。答案已经指出我应该避免 instanceof()。
@aioobe 的想法在我看来非常巧妙。对该方法有任何负面意见吗?
最佳答案
据我所知,有一个小问题。由于您确实希望 handleAll
方法重新抛出任何未捕获的异常,因此必须将其声明为 throws Exception
。这意味着调用 handleAll
的方法也是如此。
如果 X-
、Y-
和 ZException
都是 RuntimeExceptions
我看不出有什么问题。 (虽然我可能忽略了一些东西,因为这是我第一次看到这种方法。)
为了确保 instanceof
方法的行为与 catch 子句完全一样,我会考虑像这样设计 handleAll(RuntimeException e)
:
private void handleAll(RuntimeException e) {
try {
throw e;
} catch (XException xe) {
...
} catch (YException xe) {
...
} catch (ZException xe) {
...
}
}
关于java - 处理多个异常的通用/集中方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6909920/