java - IllegalArgumentException 未被捕获或丢失某些内容

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

我期待“非法争论”。但它显示“正在打印”。

我错过了什么吗?

最佳答案

我追踪到了。当抛出此 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/

相关文章:

java - 连接到需要使用 Java 进行身份验证的远程 URL

java - android HttpResponse 总是在第二次调用时死掉

java - 将列表放入 map 中

java - 什么指的是我的文件,阻止我成功调用 .delete()?

javascript - 为什么要在 try 和 catch 短语中实现相同的功能?

c# - 无法在 C# 中捕获 0xC0000005 异常

java - string.split() 方法的输出

c++ - 混合 C 和 C++ 代码时确保异常传播的机制

java 抛出异常 java.lang.IndexOutOfBoundsException :

在 "try" block 中抛出的 Java 异常无法在 "try...catch"之外捕获