【问题标题】:Exception Handling for Validation Best Practice in .NET.NET 中验证最佳实践的异常处理
【发布时间】:2012-04-18 23:15:33
【问题描述】:

我只是想知道在验证和逻辑上抛出错误是否是一种最佳做法,如下所示。我在我的控制器中的 OnException 方法中捕获这些,并通过 Ajax 作为 JSON 将其发送回客户端。抛出这样的异常可以吗?

public void Update(EditTeacherModel model)
        {
            var entity = _teachersRepository.FindBy(model.Id);

            if(entity == null)
                throw new NatGeoNotFoundException("Teacher");


        }

【问题讨论】:

    标签: .net asp.net-mvc-3 exception-handling


    【解决方案1】:

    只要你有一个特殊的、干净的异常类型,我看不出这会是一个问题的原因。异常是跳出多个嵌套调用堆栈帧的便捷方式。

    但请注意,该异常在 CLR 上非常很慢。

    【讨论】:

      【解决方案2】:

      例外有成本。处理自定义/业务错误的最佳做法是返回正确的错误代码。

      此处讨论异常处理最佳实践:http://www.codeproject.com/Articles/9538/Exception-Handling-Best-Practices-in-NET

      这里也讨论过:.NET Throwing Custom Exceptions

      【讨论】:

      • 这来自您的链接。对不应忽略的错误使用异常我将为此使用一个真实世界的示例。在开发 API 以便人们可以访问 Crivo(我的产品)时,您应该做的第一件事是调用 Login 方法。如果 Login 失败或未被调用,则所有其他方法调用都将失败。我选择在 Login 方法失败时抛出异常,而不是简单地返回 false,因此调用程序不能忽略它。 -
      【解决方案3】:

      例外是昂贵的。我相信它们适用于您的应用程序的意外行为。

      我认为,验证错误永远不应该抛出异常。

      【讨论】:

        猜你喜欢
        • 2018-01-03
        • 1970-01-01
        • 1970-01-01
        • 2017-05-11
        • 2013-05-09
        • 2011-11-10
        • 1970-01-01
        • 2013-04-22
        相关资源
        最近更新 更多