1

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

4

3 回答 3

2

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

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

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

于 2020-11-18T11:59:23.193 回答
0

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

确实,方法

e.printStackTrace()

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

于 2020-11-18T11:58:46.170 回答
0

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

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

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

于 2020-11-18T12:03:09.593 回答