避免 printStackTrace();改用记录器调用

2022-08-31 10:37:45

在我的应用程序中,我正在运行我的代码,PMD.It 向我显示以下消息:

  • 避免 printStackTrace();请改用记录器调用。

那是什么意思?


答案 1

这意味着您应该使用等日志记录框架,而不是直接打印异常:

e.printStackTrace();

您应该使用此框架的API记录它们:

log.error("Ops!", e);

日志记录框架为您提供了很大的灵活性,例如,您可以选择是否要登录到控制台或文件 - 或者如果您发现某些消息在某些环境中不再相关,则可以跳过它们。


答案 2

如果调用异常,则会将跟踪写入其中,并且很难将其路由到其他位置(或对其进行筛选)。建议您不要这样做,而是使用日志记录框架(或围绕多个日志记录框架的包装器,如Apache Commons Logging),并使用该框架记录异常(例如)。printStackTrace()System.errlogger.error("some exception message", e)

这样做可以让您:

  • 一次将日志语句写入不同的位置,例如控制台和文件
  • 按严重性(错误、警告、信息、调试等)和来源(通常基于包或类)筛选日志语句
  • 对日志格式有一定的影响,而无需更改代码
  • 等。

推荐