2012-06-22 16 views
3

考慮這個例子ReSharper的錯誤可能的NullReferenceException的警告與任務並行庫

var task =Task.Factory.StartNew(()=>Console.WriteLine("test")); 

task.ContinueWith(antecendent => 
     { 
      ExceptionProcessor.HandleError(task.Exception.Flatten()); 
     }, TaskContinuationOptions.OnlyOnFaulted); 

在這個例子中ReSharper的預測,存在task.Exception.Flatten()可能的空指針異常,因爲它假定task.Exception可能爲空。

但是對於所有的實際情況,它不會爲空,因爲TaskContinuationOptions.OnlyOnFaulted參數確保只有在發生異常時纔會調用該方法。

那麼,我該如何讓Resharper忽略所有類似的警告?

回答

3

,我認爲有以下幾個選項:

  1. 忽略在這種情況下報警。
  2. 將所有「可能出現的NullReferenceException」的嚴重性降低爲像提示,甚至不顯示。
  3. 通過註釋禁用此警告實例。
  4. 假裝ReSharper是正確的,並添加null檢查。

我不喜歡#4,你會讓你的代碼變得不太可讀,所以ReSharper很高興。我也不喜歡#3,這可能會污染你的代碼很多評論。 #2是更好的,但我認爲#1是最好的選擇:「Posible NullReferenceException」總是有誤報,所以你應該用它作爲指導:「在這裏要小心,可能是錯的」,而不是嚴格的「你必須解決這個問題」。

+0

我同意您的所有意見,無視警告似乎是最好的情況下,截至目前。但問題是,你不能區分真正的情況下,空檢查丟失和誤報 –

+0

是的,我知道,但我不知道任何更好的解決方案。 – svick

相關問題