2012-04-18 121 views
1

我只是想知道是否将验证错误和逻辑错误引发的最佳做法如下。我在我的控制器中的OnException方法中捕获这些方法,并通过Ajax将其作为JSON发送回客户端。抛出这样的异常好吗?在.NET中进行验证最佳实践的异常处理

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

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


     } 

回答

2

只要你有一个特殊的,干净的例外类型,我不明白这是一个问题。异常是从多个嵌套的调用堆栈帧中跳出的一种便捷方式。

请注意,虽然在CLR上的例外是很慢,但是很慢。

1

例外有一个费用。处理自定义/业务错误的最佳做法是返回适当的错误代码。

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

也有人在这里讨论:.NET Throwing Custom Exceptions

+0

这来自您的链接。对不应忽视的错误使用例外 我将使用一个真实世界的例子。在开发API以便人们可以访问Crivo(我的产品)时,首先应该调用Login方法。如果登录失败或未被调用,则每个其他方法调用都将失败。如果失败,我选择从Login方法抛出异常,而不是简单地返回false,所以调用程序不能忽略它。 - – 2012-04-19 16:04:09

1

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

验证错误不应该抛出异常,我想。