IllegalArgumentException未被捕获或丢失

时间:2013-07-09 20:11:05

标签: java exception try-catch illegalargumentexception throws

以下代码:

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");
}

我期待“非法争论”。但相反,它显示“这是印刷”。

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:0)

只是一个想法。您确定在抛出捕获部分使用相同包中的类。例如,您可以在解析方法中抛出com.foo.bar.IllegalArgumentException但尝试捕获java.lang.IllegalArgumentException 那么请你检查导入部分,以防你有不同的类。

答案 1 :(得分:0)

我追踪它。抛出此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覆盖实际的异常