2011-04-23 79 views
1

拋出ArgumentNullException()時有一個空值是個好主意嗎? This線程沒有提到拋出null的最明顯異常。拋出ArgumentNullException

感謝

+0

在那個線程中,問題的提問者期待null作爲參數,但是(正如註釋所暗示的那樣)。在特定情況下,它不是一個例外情況,他希望在參數非空時引發異常 – 2011-04-23 01:20:35

回答

6
當參數的方法被發現是空

ArgumentNullException應該只用於:

public void MyMethod(MyClass cannotBeNull) 
{ 
    if (cannotBeNull == null) 
    { 
     throw new ArgumentNullException("cannotBeNull"); 
    } 
    // Do something useful 
} 
+1

請參閱代碼分析規則[CA1062:驗證公共方法的參數](https://msdn.microsoft.com/zh-cn/ -us /庫/ ms182182.aspx)。 – DavidRR 2016-04-05 15:19:01

0

其實你向後讀它,其他之情況有擁有的情況:

如果我期待空值並得到一個定義值

如果你看一下MSDN: ArgumentNullException它是專門爲

當空引用(在Visual 基本爲Nothing)傳遞給方法時引發,它 不接受它作爲一個例外有效的論點。

我期待着一個空的,我得到的東西

我期待的東西,我得到空

也就是說,沒有任何理由,你不能,或不應該,創建你自己的

public class IWantANullException:Exception 

並以任何你想要的方式扔掉它。

相關問題