我正在寻找一种设计模式,它将为我提供一个很好的机制来处理跨项目的多个层抛出的异常。寻找适合这种情况的一些好的设计模式。我在.net环境中工作。提前谢谢。
答案 0 :(得分:1)
我假设您使用的是n层架构。
您可能知道,每个架构都有自己的专业知识。利弊。异常处理是n层的缺点之一。
根据我的经验,您应该在顶层捕获异常,因为这是您获得有关异常的最多信息,最重要的是完整堆栈跟踪。
然而,可能有一些理由在其他层中捕获异常。但我只能想到一个:
此外,我还会避免在多个层中记录异常,因为这不是必需的。
然而,这是我个人的想法。您可以在这里查看更多信息和讨论:
Exception handling in n-tier applications?
答案 1 :(得分:1)
我认为关注点是您要使用例外的目的。例如:
根据这些简单的场景,您可以了解您的例外是否必须由引发它的图层处理,或者是否需要将其“冒泡”给用户。
例如,可以通过定义一个公共ValidationErrorHandler来管理case(1),该公共ValidationErrorHandler将每个单个异常映射到日志消息/(re)action / validationReportObject等等......然后返回给用户(或者调用者)描述对象
情况(3)和(4)可以在提升层内部管理或传播到更高层。这取决于你想要给最终用户的“如何运作”的知识。
案例(3)没有真正的例外情况,但在这种情况下,您可以直接将异常/错误与消息映射到用户,而不涉及其他层。
我希望这可以帮到你。也许如果您向我们提供有关您的用例的更多信息,我们可以找到更好更深入的解决方案