use*_*398 67 java logging pmd printstacktrace
在我的应用程序中,我通过PMD运行我的代码.它向我显示了这条消息:
- 避免使用printStackTrace(); 请使用记录器调用.
那是什么意思?
Tom*_*icz 114
这意味着您应该使用logback或log4j等日志框架,而不是直接打印异常:
e.printStackTrace();
Run Code Online (Sandbox Code Playgroud)
你应该使用这个框架的API来记录它们:
log.error("Ops!", e);
Run Code Online (Sandbox Code Playgroud)
日志框架为您提供了很大的灵活性,例如,您可以选择是否要登录到控制台或文件 - 或者如果您发现它们在某些环境中不再相关,可能会跳过某些消息.
Tho*_*mas 36
如果您调用printStackTrace()异常,则会写入跟踪,System.err并且很难将其路由到其他位置(或过滤它).而不是这样做,建议您使用日志框架(或围绕多个日志框架的包装器,如Apache Commons Logging)并使用该框架记录异常(例如logger.error("some exception message", e)).
这样做可以让你:
Ste*_*n C 16
生产质量计划应使用众多日志备选方案之一(例如log4j,logback,java.util.logging)来报告错误和其他诊断.这有许多优点:
相比之下,如果您只使用printStackTrace,则部署者/最终用户几乎没有控制权,并且在不适当的情况下,日志消息可能会丢失或显示给最终用户.(并且没有什么比一个随机堆栈跟踪更害怕胆小的用户.)