我很困惑,如果我在重新抛出它时无法记录任何异常,如果问题存在?
或者如果我记录它,如果每个人都这样做,会产生太多日志,我很困惑。
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
答案 0 :(得分:2)
我不确定你提到的那些书,但对我来说,作为一个必须调试代码并找到错误的根本原因的人,我想在日志中稍后阅读它。尽可能靠近它首次触发的地方。
答案 1 :(得分:0)
每个LOG功能都有一个开关来禁用该日志消息,因此如果是异常,则必须记录所有异常。如果您期望该异常,例如,检查String是否为数字,并且您想知道异常的结果,那么您不需要执行日志。
答案 2 :(得分:0)
就例外情况而言,最重要的日志消息应位于服务层。重要的是保持整个堆栈跟踪,以便即使在多次重新抛出之后也可以轻松找到问题。 您始终可以将日志放在所有层中,并操作certail层的日志记录级别,以仅查看当前正在调试/处理的层中的日志。其他日志可以设置为OFF。阅读您最喜爱的记录器的文档,以了解更多相关信息。