【问题标题】:Why exception is caught 3 times? [closed]为什么异常被捕获 3 次? [关闭]
【发布时间】: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")。堆栈跟踪准确地告诉您哪个调用堆栈导致您出现这种情况。换句话说:您已经在这些调用堆栈中拥有了识别该代码路径所需的所有信息。所以不要把它们扔掉,而是打印或记录它们,然后看看发生了什么。

标签: java exception log4j2


【解决方案1】:

这个问题不应该首先发布。问题的根本原因是3个类继承了一个基类,基类构造函数中的一个方法被调用了三次。移出这个“init”方法解决了这个问题。

【讨论】:

    猜你喜欢
    • 2012-03-03
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2012-01-22
    相关资源
    最近更新 更多