1

在具有表示层、服务层和 dao 层的经典 3 层应用程序中,确保简洁且不重复的异常报告日志消息的最合适方法是什么。想象一下,您的 dao 层捕获任何类型的已检查异常(我们将使用 Java 术语,但相同的概念适用于其他异常处理语言)并将其转换为带有适当消息的 daoexception。是否应该在 dao 层同时记录相应的消息(例如“访问 db 时发生异常”+ e.getMessage())?然后服务层捕获所有的daoexception,自己提供适当的服务层消息,将daoexception(包装)翻译成serviceexception,然后重新抛出。服务层是否也应该记录捕获的异常?简而言之:

  • 应该只记录 dao 层吗?
  • 应该只记录服务层吗?
  • 两层都应该记录吗?
  • 还是应该根据用例/服务调用等逐案考虑每种情况?

出于这个问题的目的,我忽略了表示层。

4

3 回答 3

0

服务层异常中的堆栈跟踪将包含底层的 dao 异常,所以我想在服务层记录它是有意义的。

于 2013-02-15T06:17:38.207 回答
0

这个问题对我来说是主观的。AFAIK 它是由设计决定的。

要回答,您是否应该考虑记录调用和异常的要求,有些是您记录的,有些是您吃的,有些是您忽略的。对于 web 服务或其他组件调用,您当然需要服务层日志记录。我宁愿在你的问题中选择第四个选项。

于 2013-02-15T06:33:23.510 回答
0

我将以尽可能高的级别登录。

您是否碰巧使用Commons了 Apache 的任何库,例如您可能会遇到StringUtils.isBlank(). 这些库不会在其中记录任何错误消息,相反,如果需要,它们会将异常返回给您,由您决定处理它,或打印任何有用的调试消息。

于 2013-02-15T06:34:10.903 回答