处理项目中跨多层的异常
本文关键字:异常 项目 处理 | 更新日期: 2023-09-27 18:12:26
我正在寻找一种设计模式,它将为我提供一种良好的机制来处理跨项目多层抛出的异常。寻找一些适合这种情况的好的设计模式。我在。net环境中工作。
我假设您使用的是n层架构。
你可能知道,每种架构都有自己的优点。异常处理是n层的缺点之一。
根据我的经验,你应该在顶层捕获异常,因为那里你有关于异常的最多信息,最重要的是有完整的堆栈跟踪。
然而,在其他层中捕获异常可能有一些原因。但我只能想到一个:- 层可以自己处理它们。示例:a connection failed and
我也会避免在多个层记录异常,因为这是不必要的。
这是我个人的想法。你可以在这里查看更多信息&讨论:
n层应用程序中的异常处理?
我认为重点是您将在多少目的下使用异常。在例子:
- 业务规则验证—如果业务规则失败,则抛出异常;
- 运行时异常 -连接丢失/拒绝等
- 前端验证错误 -用户数据或用户工作流不符合某些要求等…
- 致命错误 -严重程度非常高的错误,必须中断应用程序工作流(引用null对象…)
给出这些简单的场景,你就可以理解你的异常是否必须由引发它的层来处理,或者是否需要让它"冒泡"到用户。
例如,案例(1)可以通过定义一个通用的ValidationErrorHandler来管理,该handler将每个异常映射到日志消息/(重新)操作/validationReportObject等等…然后返回给用户(或调用者)一个描述对象
情况(3)和(4)既可以在提升层内部管理,也可以传播到更高的层。这取决于你想给最终用户提供多少关于"事物如何运作"的知识。
情况(3)没有真正的异常,但在这种情况下,您可以直接将带有消息的异常/错误映射给用户,而无需涉及其他层。
我希望这能帮助你。也许如果你能给我们更多关于你的用例的信息,我们可以找到一个更好更深入的解决方案