gpt4 book ai didi

java - 如何在 Java 6 中捕获所有已检查的异常(在一个 block 中)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:56:00 24 4
gpt4 key购买 nike

重要提示:此问题仅与 Java 6(及更低版本)有关。

层次结构here显示 Java Exception 分为两种类型:RuntimeException[not a RuntimeException]:

Java exceptions hierarchy

将它分成类似UncheckedExceptionCheckedException 这样的东西不是更好吗?例如,下面的语句有相当多的已检查异常:

try {
transaction.commit();
} catch (SecurityException e) {
} catch (IllegalStateException e) {
} catch (RollbackException e) {
} catch (HeuristicMixedException e) {
} catch (HeuristicRollbackException e) {
} catch (SystemException e) {
}

我只对它是成功还是失败真正感兴趣,所以想将已检查的异常作为一个组来处理,而不是未检查的异常,因为捕获意外错误不是好的做法。所以考虑到这一点,也许我可以做类似的事情:

try {
transaction.commit();
} catch (Exception e) {
if (e instanceof RuntimeException) {
// Throw unchecked exception
throw e;
}
// Handle checked exception
// ...
}

但这看起来非常骇人听闻。有没有更好的办法?

最佳答案

如果我没理解错的话,那你就快到了。只需捕获 RuntimeException。这将捕获 RuntimeException 及其层次结构中的所有内容。然后是 Exception 的 fallthrough,你就被覆盖了:

try {    transaction.commit();} catch (RuntimeException e) {    // Throw unchecked exception    throw e;} catch (Exception e) {    // Handle checked exception    // ...}

关于java - 如何在 Java 6 中捕获所有已检查的异常(在一个 block 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14771239/

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