我有以下代码:
try {
DOMConfigurator.configure(url+log4j.xml);
} catch(Exception e) {
e.printStackTrace();
}如果log4j.xml不存在,我会期望出现一个FileNotFoundException,然后将执行catch-block。
但是当文件不存在时,我没有看到异常,为什么呢?
发布于 2010-10-19 18:36:37
如果你看一下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);
} 要解决此问题,您可以自己抢先检查该文件是否存在。
发布于 2010-10-20 01:48:31
尝试捕获Throwable而不是异常,并执行打印堆栈跟踪。这样,您就可以捕获任何错误或异常,并相应地更改代码。
发布于 2012-05-24 17:22:10
如果您想从log4j禁用这些消息,您可以将log4j设置为静默模式:
LogLog.setQuietMode(true);https://stackoverflow.com/questions/3967304
复制相似问题