重要信息:此问题仅与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的失败,您将了解:
尝试 {
transaction.commit();
} catch(RuntimeException e){
//引发未经检查的异常
抛出e;
} catch(Exception e){
//处理检查的异常
//...
}
关于java - 如何在Java 6中捕获所有检查的异常(在单个块中)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14771239/