.NET 指南:捕获并且抛出标准的异常类型
生活随笔
收集整理的這篇文章主要介紹了
.NET 指南:捕获并且抛出标准的异常类型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
下列指導方針為 .NET Framework 所提供的一些最常用的異常而描述了最佳的實踐。關于 .NET Framework 所提供的完整的異常類列表,請參考:[.NET Framework 類庫參考文檔]。
Exception 與 SystemException
不要拋出 System.Exception 或者 System.SystemException。
不要在框架的代碼中捕獲 System.Exception 或者 System.SystemException,除非你打算用來重新拋出異常。
避免捕獲 System.Exception 或者 System.SystemException,除非是在頂層的異常處理器中。
ApplicationException
不要拋出或者繼承自 System.ApplicationException。
InvalidOperationException
如果在一個不適當的場合中,不要拋出一個 System.InvalidOperationException 異常。如果一個屬性設置或者一個方法調用沒有適當地提供對象的當前狀態,應該拋出 System.InvalidOperationException。例如,對于一個已經作為讀取需要而被打開的 System.IO.FileStream 執行寫入操作就應該拋出一個 System.InvalidOperationException 異常。
異常同樣應該在相關對象集的被組合狀態對于操作來說是無效的時候才被拋出。
ArgumentException、ArgumentNullException,以及 ArgumentOutOfRangeException
如果不正確的參量被傳遞給一個成員,拋出 System.ArgumentException 或者它的一個子類型。如果適用,寧愿是最終被派生的異常類型。
下列代碼范例示范了在一個參量是 null 值(在 Visual Basic 中是 Nothing)的時候拋出一個異常。
C#
if (anObject == null) {throw new ArgumentNullException("anObject", "Specify a non-null argument."); }在拋出 System.ArgumentException 或者它的一個派生類型的時候設置 System.ArgumentException.ParamName 屬性。這個屬性存儲了導致異常被拋出的參數名稱。注意:這個屬性能夠通過使用任何一個構造器重載來進行設置。
為屬性設置器的隱式 value 參數的名稱使用 value。
下列代碼范例說明了能夠在調用者傳遞了一個 null 值參量的時候拋出一個異常的屬性。
C#
public IPAddress Address {get{return address;}set{if(value == null){throw new ArgumentNullException("value");}address = value;} }不允許公開可調用的 API 來明確地或者隱式地拋出 System.NullReferenceException、System.AccessViolationException、System.InvalidCastException,或者 System.IndexOutOfRangeException。應該實行參量檢查來避免拋出這些異常。因為拋出這些異常可以暴露出你的方法中的實現細節,同時這些方法也會隨著時間而發生變化。
StackOverflowException
不要明確地拋出 System.StackOverflowException。這個異常應該只能夠通過公共語言運行時(CLR)而被拋出。
不要捕獲 System.StackOverflowException。
通過編程的方式來處理堆棧的溢出將會是非常困難的。你應該允許通過這個異常來終止進程并且使用調試機制來檢查問題的來源。
OutOfMemoryException
不要明確地拋出 System.OutOfMemoryException。這個異常只應該通過 CLR 架構而被拋出。
COMException 與 SEHException
不要明確地拋出 System.Runtime.InteropServices.COMException 或者 System.Runtime.InteropServices.SEHException。這些異常只應該通過 CLR 架構而被拋出。
不要明確地捕獲 System.Runtime.InteropServices.SEHException。
ExecutionEngineException
不要明確地拋出 System.ExecutionEngineException。
轉載于:https://www.cnblogs.com/Laeb/archive/2007/02/03/639000.html
總結
以上是生活随笔為你收集整理的.NET 指南:捕获并且抛出标准的异常类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习基石-作业三-代码部分
- 下一篇: Javascript中的事件冒泡