2015-05-28 222 views
0

如果爲空,我有一個Web應用程序請求和一個基本的異常被拋出。Web應用程序請求

任何人都可以推薦比泛型異常更好的東西嗎?我確定我的客戶想要一些讓用戶知道請求爲空的東西,或者甚至強制請求不爲空。

代碼示例:提前

+1

首先爲什麼你沒有'公共異步任務BuildLeadFromRequest(WebApplicationRequest請求)'?如果由於任何原因你不能改變它,那麼你可以使用'ArgumentException'和一個適當的錯誤信息。 –

回答

1

的用戶是不會知道的異常類型之間的差異,指望他們作用於特定type

public async Task <Lead> BuildLeadFromRequest(object request) 
{ 
     var req = request as WebApplicationRequest; 
     if (req == null) 
      throw new Exception(); //TODO: Something better than throwing an exception 
} 

由於是傻瓜打賭,對用戶來說有用的是一個有意義的消息,模糊的異常名稱和堆棧跟蹤僅對我們這些開發人員有用。

通過堆棧跟蹤的操作向用戶報告狀態也不是一個好主意,但我不明白爲什麼你的方法將被調用一個null來開始,所以這是一個關鍵的異常,應該是thrown

有許多種方法可以讓更多的信息,但最簡單的是這樣的:

if (req == null) 
     throw new Exception("Request was not valid."); 

缺少了什麼你的問題是,這可能是如何發生的,你的異常細節可以說明它是如何可能的。

if (req == null) 
     throw new Exception("Request was not valid. Perhaps you did operation A instead of doing expected operation B... blah blah"); 

很明顯,你可以創建的ExceptionApplicationException子類,但是這是你的電話。

現在爲什麼可以用null調用這個方法是另一個問題。

+1

我同意這一點。我不熟悉C#(和ASP.NET MVC,如果這是OP使用的),但是OP可能只是重定向到404頁面,如果函數的參數格式不正確或不正確。 –

+0

只要有有用的信息說明你爲什麼要顯示一個404,我就會遇到的最大的問題就是沒有告訴我任何東西。 NullRef異常很明顯..實際上這個OP異常真的是什麼,但是在這種情況下會出現一個很大的問號。 –