Dot-Net

明確拋出 NullReferenceException 的原因?

  • November 14, 2018

我正在清理一些遺留程式碼,並且發現了顯式拋出 a 的方法NullReferenceException(例如:檢查類的某些屬性是否為空,或檢查配置時)。由於在空引用的情況下 CLR 會拋出這種類型的異常,因此對於應用程序顯式拋出異常來說,這似乎是一個非常糟糕的選擇。

我的問題是 - 有什麼理由可以讓 aNullReferenceException成為從程式碼中顯式拋出異常的好選擇?

的文件暗示您不應將其從應用程序中拋出:NullReferenceException

請注意,應用程序拋出ArgumentNullException異常,而不是此處討論的 NullReferenceException 異常。

而且我確信我在其他地方看到過指導(目前找不到任何指導-> 它在這裡https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/using-standard- exception-types),您應該避免拋出執行時拋出的異常類型(儘管我將連結到顯示執行時拋出“應用程序”異常的東西)


如果您正在檢查方法中的屬性,在繼續之前,聽起來您可能想用InvalidOperationException替換它們:

InvalidOperationException 用於呼叫方法失敗是由無效參數以外的原因引起的情況。

方法呼叫處於錯誤狀態聽起來符合這個定義。

引用自:https://stackoverflow.com/questions/7821755