Java LOG.error(“IOException:”和“x2B;e.getMessage(),e”)之间的区别是什么;和LOG.error(“IOException:”和“e.getMessage());?
我注意到这两种说法都是有效的。与第二条语句相比,第一条语句中记录的额外内容是什么?第一条语句还记录原始异常(和stacktrace),第二条语句只记录消息Java LOG.error(“IOException:”和“x2B;e.getMessage(),e”)之间的区别是什么;和LOG.error(“IOException:”和“e.getMessage());?,java,logging,exception-handling,Java,Logging,Exception Handling,我注意到这两种说法都是有效的。与第二条语句相比,第一条语句中记录的额外内容是什么?第一条语句还记录原始异常(和stacktrace),第二条语句只记录消息 因此,第一条语句中记录的“额外内容”是原始异常。这通常是一件好事,因为这样可以更容易地调试错误。根据文档 无效错误(对象消息)=>记录具有错误日志级别的消息 无效错误(对象消息,可丢弃的t)=>以错误日志级别记录错误 我认为这可能会解决您的疑问。如果您使用带有可丢弃参数的方法,支持团队将非常感谢您。第二个只打印异常的原因,第一个显示stack
因此,第一条语句中记录的“额外内容”是原始异常。这通常是一件好事,因为这样可以更容易地调试错误。根据文档 无效错误(对象消息)=>记录具有错误日志级别的消息 无效错误(对象消息,可丢弃的t)=>以错误日志级别记录错误
我认为这可能会解决您的疑问。如果您使用带有可丢弃参数的方法,支持团队将非常感谢您。第二个只打印异常的原因,第一个显示stacktrace
如果在try/catch中使用第二个异常,则可能隐藏了原始异常,因为它只打印第一个异常的消息。您可以使用日志API进行检查。第一个异常只有原因(消息)。第二个has既有原因也有抛弃,如果两个has都有效,则在
getMessage
之后需要()
。例如,可以将记录器配置为记录堆栈跟踪。有时非常有用。事实上,第一种形式使得e.getMessage()
以及“IOException!”的包含大部分是多余的(无论如何都会作为异常的一部分记录)。更好地使用日志消息来提供有用的上下文,比如这里执行的是什么操作、针对哪个用户、针对哪个资源。