2009-02-16 64 views
2

當我將字符串傳遞給異常參數時,Visual Studio似乎會投訴。無法在異常構造函數中寫入字符串

if (str1 == null || str2 == null) 
{ 
    throw new ArgumentNullException("lmkl"); 
} 

Visual Studio說它無法解析符號"lmkl"

如果我有一個字符串變量(例如throw new... string s = "test";以上)並將其作爲異常的參數,Visual Studio對此感到非常滿意。

什麼給?

感謝

+0

你從BCL使用ArgNullEx或實現自己的? – StingyJack 2009-02-16 15:58:01

+0

BCL的ArgNullEx。 – dotnetdev 2009-02-16 16:09:17

回答

7

的重載構造函數ArgumentNullException接受單個字符串參數的文檔指出,這種說法應該是:

The name of the parameter that caused the exception.

此刻,如果你的代碼拋出你不會例外t知道哪個參數爲null。

推薦重寫

if (str1 == null) throw new ArgumentNullException("str1"); 
if (str2 == null) throw new ArgumentNullException("str2"); 
+0

感謝您的提示。我會給它一個去!再次感謝 – dotnetdev 2009-02-16 16:09:54

7

其實,Visual Studio的不關心這個在所有。我假設你已經安裝了ReSharper?這證實了很多常見的錯誤,包括錯誤使用模式,如ArgumentException等。它也有更好的檢查 - 不完全是「合同」,但仍然非常有幫助。

只有當它能夠看到在已知模式中使用的字符串文字時纔會嘗試此操作 - 追逐變量分配方式的分析對於實際分析來說太簡單了。

0

如果您使用ReSharper的,這應該抑制警告(假設str1和你的參數的時名):

throw new ArgumentNullException(nameof(str1));