【发布时间】:2019-10-02 06:30:24
【问题描述】:
我正在捕获 FileNotFoundException 并通过 log4j2 将其记录到文件中。日志语句被调用三次。我用 sysout 语句替换了日志语句,以检查这是否打印了 3 次消息。它确实打印到控制台 3 次。为什么 sysout 语句或 log 语句被调用了 3 次?
下面是代码sn-p。
prop = new Properties();
String path ="invalid path";
try {
FileInputStream fis = new FileInputStream(path);
} catch (FileNotFoundException e) {
log.error("FileInputStream exception");
System.out.println("Exception");
}
【问题讨论】:
-
你可能会调用你的方法三次。
-
如果你在独立模式下运行,你会得到 3 次,如果没有,那么某个函数可能会被调用 3 次。
-
请阅读“如何创建minimal reproducible example”。然后使用edit 链接改进您的问题(不要通过 cmets 添加更多信息)。否则我们无法回答您的问题并为您提供帮助。
-
将 IDE 设置为调试模式并检查它是否被调用了 3 次
-
并提示:您可以打印整个堆栈跟踪,而不是只执行 println("Exception")。堆栈跟踪准确地告诉您哪个调用堆栈导致您出现这种情况。换句话说:您已经在这些调用堆栈中拥有了识别该代码路径所需的所有信息。所以不要把它们扔掉,而是打印或记录它们,然后看看发生了什么。