gpt4 book ai didi

java - 在 Java 中使用 System.err 有什么问题?

转载 作者:搜寻专家 更新时间:2023-10-30 21:14:20 25 4
gpt4 key购买 nike

我在我的 Java 代码上使用 Enerjy ( http://www.enerjy.com/ ) 静态代码分析器工具。它告诉我以下行:

System.err.println("忽略了那个数据库");

不好,因为它使用了 System.err。确切的错误是:“JAVA0267 使用 System.err”

使用 System.err 有什么问题?

最佳答案

简短回答:将它用于日志目的被认为是一种不好的做法。

据观察,在没有广泛可用/接受的日志记录框架的过去,每个人都使用 System.err 将错误消息和堆栈跟踪打印到控制台。这种方法可能适用于开发和本地测试阶段,但不适用于生产环境,因为您可能会丢失重要的错误消息。正因为如此,在今天几乎所有的静态分析工具中,这种代码都会被检测到并标记为不良做法(或类似命名的问题)。

日志框架反过来提供结构化和逻辑的方式来记录您的事件和错误消息,因为它们可以将消息存储在各种持久位置(日志文件、日志数据库等)。

最明显的(并且没有外部依赖) hack 解决方案是通过 java.util.logging.Logger 类使用内置的 Java Logging 框架,因为它默认情况下将日志记录事件转发到控制台。例如:

final Logger log = Logger.getLogger(getClass().getName());
...
log.log(Level.ERROR, "Something went wrong", theException);

(或者您可以关闭该分析选项)

关于java - 在 Java 中使用 System.err 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1049795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com