处理项目中跨多层的异常

本文关键字:异常 项目 处理 | 更新日期: 2023-09-27 18:12:26

我正在寻找一种设计模式,它将为我提供一种良好的机制来处理跨项目多层抛出的异常。寻找一些适合这种情况的好的设计模式。我在。net环境中工作。

处理项目中跨多层的异常

我假设您使用的是n层架构。
你可能知道,每种架构都有自己的优点。异常处理是n层的缺点之一。

根据我的经验,你应该在顶层捕获异常,因为那里你有关于异常的最多信息,最重要的是有完整的堆栈跟踪。

然而,在其他层中捕获异常可能有一些原因。但我只能想到一个:
  1. 层可以自己处理它们。示例:a connection failed and

我也会避免在多个层记录异常,因为这是不必要的。

这是我个人的想法。你可以在这里查看更多信息&讨论:
n层应用程序中的异常处理?

我认为重点是您将在多少目的下使用异常。在例子:

  1. 业务规则验证—如果业务规则失败,则抛出异常;
  2. 运行时异常 -连接丢失/拒绝等
  3. 前端验证错误 -用户数据或用户工作流不符合某些要求等…
  4. 致命错误 -严重程度非常高的错误,必须中断应用程序工作流(引用null对象…)

给出这些简单的场景,你就可以理解你的异常是否必须由引发它的层来处理,或者是否需要让它"冒泡"到用户。

例如,案例(1)可以通过定义一个通用的ValidationErrorHandler来管理,该handler将每个异常映射到日志消息/(重新)操作/validationReportObject等等…然后返回给用户(或调用者)一个描述对象

情况(3)和(4)既可以在提升层内部管理,也可以传播到更高的层。这取决于你想给最终用户提供多少关于"事物如何运作"的知识。

情况(3)没有真正的异常,但在这种情况下,您可以直接将带有消息的异常/错误映射给用户,而无需涉及其他层。

我希望这能帮助你。也许如果你能给我们更多关于你的用例的信息,我们可以找到一个更好更深入的解决方案