以下代码:
try {
value = parse(myData);
} catch (Exception e) {
if ( e instanceof IOException|| e instanceof IllegalArgumentException) {
logger.debug("illegal argument");
} else {
logger.debug("this is printing");
}
}
解析方法:
parse(String data) throws IOException, IllegalArgumentException {
// do validation
throw new IllegalArgumentException("illegal");
}
我期待“非法争论”。但它显示“正在打印”。
我错过了什么吗?
最佳答案
我追踪到了。当抛出此 IllegalArgumentException 时,它会被 EJBTransactionRollbackException 包装。
抛出以下内容:
The transaction has been marked rollback only because the bean encountered a non-application
exception :java.lang.IllegalArgumentException:
Actual Exception class: class javax.ejb.EJBTransactionRolledbackException
现在问题不同了,如何不让 EJBTransactionException 覆盖实际的异常
关于java - IllegalArgumentException 未被捕获或丢失某些内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17557291/