在具有表示层,服务层和dao层的经典3层应用程序中,什么是确保简洁和不重复的异常报告日志消息的最合适方法。想象一下,你的dao层捕获任何类型的已检查异常(我们将使用Java术语,但适用于其他异常处理语言的概念)并将其转换为带有适当消息的daoexception。是否应该在dao层中同时记录相应的消息(例如,“访问db时发生异常”+ e.getMessage())?然后服务层捕获所有daoexceptions,它本身提供适当的服务层消息,将daoexception(包装它)转换为serviceexception然后重新抛出。服务层是否也应记录捕获的异常?简而言之:
出于这个问题的目的,我忽略了表示层。
答案 0 :(得分:0)
service layser异常中的stacktrace将包含底层的dao异常,所以我想将它记录在服务层是有意义的。
答案 1 :(得分:0)
这个问题对我来说是主观的。 AFAIK它是由设计决定的。
要回答,你不应该考虑记录呼叫和异常的要求,一些你记录,一些你吃,一些你忽略。对于Web服务或其他组件调用,您当然需要服务层日志记录。我宁愿在你的问题中选择第4个选项。
答案 2 :(得分:0)
我将以最高级别登录。
您是否碰巧使用了Apache的任何Commons
库,例如您可能会遇到StringUtils.isBlank()
。这些库不会记录任何错误消息,相反,如果需要,它们会将异常抛回给您,您决定处理它,或打印任何有用的调试消息。