我有以下代码:

try {
    DOMConfigurator.configure(url+log4j.xml);
} catch(Exception e) {
    e.printStackTrace();
}

如果log4j.xml不存在,我希望输入FileNotFoundException,然后执行catch块。

但是当文件不存在时我看不到异常,为什么呢?

最佳答案

如果查看the source of DOMConfigurator.doConfigure,它看起来像是在捕获Exception,然后仅记录错误而不是将其重新抛出。因此,FileNotFoundException不会使其返回到您的调用代码。

try {
...
} catch (Exception e) {
    if (e instanceof InterruptedException || e instanceof InterruptedIOException) {
        Thread.currentThread().interrupt();
    }
    // I know this is miserable...
    LogLog.error("Could not parse "+ action.toString() + ".", e);
}

要解决此问题,您可以抢先检查该文件是否存在。

关于java - 使用DOMConfigurator时无法捕获FileNotFoundException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3967304/

10-09 21:16