2012-04-18 107 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

例外是昂貴的。我相信它們意味着您的應用程序的意外行爲。

驗證錯誤不應該拋出異常,我想。