shi*_*ike 5 java exception-handling
这是在Java 6上
我可以有一个通用的方法来处理我的异常 - 所以不要在每个方法中执行n次
try {
// Do something
} catch (XException e) {
// Do something
} catch (YException e) {
// Do something
} catch (ZException e) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
我有
try {
// Do something
} catch (Exception e) {
handleAll (e);
}
Run Code Online (Sandbox Code Playgroud)
和方法handleAll(e)呢
if e.instanceOf(XException)
else if e.instanceOf(YException)
else if e.instanceOf(ZException)
Run Code Online (Sandbox Code Playgroud)
第二种方法有什么问题吗?
更新:
我最初的问题是关于"集中处理"在一个地方对于检查和运行时异常.答案指出我应该避免使用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) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1702 次 |
| 最近记录: |