我有以下代码:
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/