【问题标题】:Alternative to e.printStackTrace() and an example code will be helpful [duplicate]e.printStackTrace() 的替代方法和示例代码将有所帮助[重复]
【发布时间】:2021-03-01 16:34:09
【问题描述】:

我在我的一个 Java 应用程序中使用了e.printStackTrace。但是,我在一些论坛上读到我们应该避免使用printStackTrace()。有人可以向我解释为什么我应该避免使用e.printStackTrace() 以及它的替代方案是什么? 请分享一段代码以替代 e.printStackTrace()

【问题讨论】:

标签: java printstacktrace


【解决方案1】:

应该使用记录器而不是在流上打印整个堆栈跟踪。 e.printStackTrace() 将 Throwable 及其堆栈跟踪打印到流中,这可能会无意中暴露敏感信息。

应该使用记录器来打印 Throwables,因为它们有很多优点。

更多信息: https://owasp.org/www-project-top-ten/2017/A3_2017-Sensitive_Data_Exposure.html

【讨论】:

    【解决方案2】:

    你应该避免它,因为最好使用像 Log4j 这样的记录器,这样你就可以在文件中写入日志并更好地管理日志记录。

    确实是方法

    e.printStackTrace()
    

    用于直接在控制台打印异常的堆栈,并且(对于生产应用程序)是错误的。

    【讨论】:

      【解决方案3】:

      我通常以这种方式记录错误:

      } catch (IOException ex) {
        log.log(Level.WARNING, ex.getMessage(), ex);
      }
      

      如果你使用 lombok,你可以将记录器添加到你的类中,并在类上使用 @Log 注释。

      【讨论】:

        猜你喜欢
        • 2022-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-12
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 2011-08-17
        相关资源
        最近更新 更多