gpt4 book ai didi

java - 处理多个异常的通用/集中方法

转载 作者:搜寻专家 更新时间:2023-10-31 19:41:27 27 4
gpt4 key购买 nike

这是在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com