作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
重要提示:此问题仅与 Java 6(及更低版本)有关。
层次结构here显示 Java Exception
分为两种类型:RuntimeException
和[not a RuntimeException]:
将它分成类似UncheckedException
和CheckedException
这样的东西不是更好吗?例如,下面的语句有相当多的已检查异常:
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/
我是一名优秀的程序员,十分优秀!