gpt4 book ai didi

asp.net-mvc - ASP.NET MVC - 异常抛出?

转载 作者:行者123 更新时间:2023-12-01 20:25:41 24 4
gpt4 key购买 nike

我有一个通用存储库 - 该存储库应该能够抛出异常还是应该保持沉默?如果我选择从中抛出异常,服务层是否应该捕获它并在异常发送到 Controller 之前抛出一个更友好的消息?

  • Pos1:存储库(抛出)=> 服务(捕获,抛出新数据)=> Controller (捕获)
  • Pos2:存储库 => 服务(抛出)=> Controller (捕获)

最佳答案

当然是选项 1。

我还会在您的想法中将“愚蠢”一词替换为“关注点分离”。存储库没有理由是愚蠢的。它有工作要做,这将涉及异常(exception)情况。

它还涉及抛出它们有两个原因:

  1. 打包消费代码中发生的真实错误。

  2. 在给定条件下抛出违反您希望此类执行的操作的异常。这些条件可能不涉及框架抛出的异常,并且可能仅与您希望存储库拥有的“智能”相关。

存储库必须封装所有这些智能,让调用代码只需要知道如何处理一组有限的异常。否则,您的调用代码需要处理例如全部 LINQ 异常,将其耦合到应该是存储库专有领域的技术。

因此,存储库智能的一部分必须抛出一组众所周知但与其特定用途相关的有限异常。

同样的推理也适用于服务层(如果有的话)。它需要以完全相同的方式处理异常:封装特定于其任务的“智能”。同样的情况也发生在 Controller 上。它应该根据自己的目的和关注点来解释从服务层(如果有)接收到的异常。

如此分离关注点,但决不愚蠢。甚至不能静音:每层都需要在必要时发出尖叫声。

关于asp.net-mvc - ASP.NET MVC - 异常抛出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3918435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com