2011-05-23 39 views
3

我有一些代碼拋出一個異常,如下所示。從VS2010的StyleCop沒有足夠具體的錯誤的異常類型

if (jobFinished) 
{ 
    ...     
} else 
{     
    throw new Exception("The server Error ...") 
} 

它編譯/運行沒有問題,但是當我運行了StyleCop,我得到這個錯誤信息說的例外是不特定的。

Error 10 CA2201 : Microsoft.Usage : Function(string, DirectoryInfo, string, string, string, out string)' 
creates an exception of type 'Exception', an exception type that is not sufficiently 
specific and should never be raised by user code. If this exception instance might be 
thrown, use a different exception type. 

我只是想在遇到一些錯誤情況時拋出錯誤。我怎樣才能做出足夠具體的例外?

回答

4

拋出一個InvalidOperationException

雖然,微軟在過去的異常處理方面並不一致,但這裏是目前的Best Practices for Handling Exceptions

過去建議您創建自己的例外並從ApplicationException派生,但現在您應該從Exception派生。

如果您不需要區分方法中不同類型的故障,那麼InvalidOperationException就足夠了。否則,請實現從Exception類派生的您自己的Exception類。

下面是實現自定義例外的準則:Designing Custom Exceptions

+0

檢查這裏獲取更多信息,以及:http://msdn.microsoft.com/en-us/ library/ms182338.aspx – 2011-05-23 21:22:13

0

你可以只延長異常和實現自己的Exception類。你可以甚至可能將其留空,如果你想只是欺騙了StyleCop

public Class MyException : Exception 
{ 
    public MyException(string errorMsg) : base(errorMessage) {} 
} 

然後

throw new MyException("blah blah"); 
+0

您顯示的異常的執行不完整 – 2011-05-23 21:41:56

相關問題