如果每个异常捕获都应该记录它?

时间:2012-08-16 06:23:34

标签: java exception

有些书提到跟随模式不好。它表示如果重新抛出每个异常都不应该记录它以避免重复异常日志。还有其他问题吗?

我很困惑,如果我在重新抛出它时无法记录任何异常,如果问题存在?

或者如果我记录它,如果每个人都这样做,会产生太多日志,我很困惑。

catch (NoUserException e) { 

    LOG.error("No user available", e); 

    throw new UserServiceException("No user available", e); 

} 

参考 http://today.java.net/pub/a/today/2006/04/06/exception-handling-antipatterns.html#logAndThrow

3 个答案:

答案 0 :(得分:2)

我不确定你提到的那些书,但对我来说,作为一个必须调试代码并找到错误的根本原因的人,我想在日志中稍后阅读它。尽可能靠近它首次触发的地方。

答案 1 :(得分:0)

每个LOG功能都有一个开关来禁用该日志消息,因此如果是异常,则必须记录所有异常。如果您期望该异常,例如,检查String是否为数字,并且您想知道异常的结果,那么您不需要执行日志。

答案 2 :(得分:0)

就例外情况而言,最重要的日志消息应位于服务层。重要的是保持整个堆栈跟踪,以便即使在多次重新抛出之后也可以轻松找到问题。 您始终可以将日志放在所有层中,并操作certail层的日志记录级别,以仅查看当前正在调试/处理的层中的日志。其他日志可以设置为OFF。阅读您最喜爱的记录器的文档,以了解更多相关信息。