Share via


例外狀況階層架構

例外狀況的類型有兩種:正在執行之程式所產生的例外狀況,以及 Common Language Runtime 所產生的例外狀況。 此外,還有例外狀況的階層架構,可以為應用程式或者執行階段所擲回。

Exception 為例外狀況的基底類別。 許多例外狀況類別直接繼承自 Exception,包括 ApplicationExceptionSystemException。 這兩個類別形成幾乎所有執行階段例外狀況的基礎。

大部分直接衍生自 Exception 的例外狀況並沒有加入功能至 Exception 類別。 例如,InvalidCastException 類別階層架構如下:

Object    Exception       SystemException          InvalidCastException

執行階段會在錯誤發生時擲回 SystemException 的適當衍生類別。 這些錯誤起因於失敗的執行階段檢查 (例如陣列超出界限的錯誤),並且會在任一方法的執行時發生。 如果您正在設計建立新例外狀況的應用程式,應從 Exception 類別衍生這些例外狀況。 建議您不要攔截 SystemException,而且在應用程式中擲回 SystemException 也不是一個好的程式設計例子。

最嚴重的例外狀況就是那些遭執行階段擲回或處於無法復原的情況,包括 ExecutionEngineExceptionStackOverflowExceptionOutOfMemoryException

互通性例外狀況衍生自 SystemException,並進一步為 ExternalException 所擴充。 例如,COMException 是 COM Interop 作業期間擲回的例外狀況,且衍生自 ExternalExceptionWin32ExceptionSEHException 也衍生自 ExternalException

執行階段例外狀況的階層架構

執行階段具有例外狀況的基底集合,衍生自執行個別指令時擲回的 SystemException。 下表階層式列出執行階段提供的標準例外狀況,和在哪些情況下您應該建立衍生類別。

例外狀況類型

基底型別

說明

範例

Exception

Object

適用於所有例外狀況的基底類別。

無 (使用這個例外狀況的衍生類別)。

SystemException

Exception

適用於所有執行階段所產生錯誤的基底類別。

無 (使用這個例外狀況的衍生類別)。

IndexOutOfRangeException

SystemException

只有當陣列索引不正確時,才由執行階段擲回。

在陣列有效範圍之外對它進行索引:

arr[arr.Length+1]

NullReferenceException

SystemException

只有當參考 Null 物件時,才由執行階段擲回。

object o = null;

o.ToString();

AccessViolationException

SystemException

只有在存取無效的記憶體時,才由執行階段擲回。

當與 Unmanaged 程式碼或不安全的 Managed 程式碼交互操作,且使用無效的指標時發生。

InvalidOperationException

SystemException

當處於無效狀態時,由方法擲回。

在從基礎集合將 Item 移除之後,呼叫 Enumerator.GetNext()。

ArgumentException

SystemException

適用於所有引數例外狀況的基底類別。

無 (使用這個例外狀況的衍生類別)。

ArgumentNullException

ArgumentException

由不允許引數為 Null 的方法擲回。

String s = null;

"Calculate".IndexOf (s);

ArgumentOutOfRangeException

ArgumentException

由驗證引數是在指定範圍內的方法擲回。

String s = "string";

s.Chars[9];

ExternalException

SystemException

發生的或以執行階段外部環境為目標的例外狀況的基底類別。

無 (使用這個例外狀況的衍生類別)。

ComException

ExternalException

封裝 COM HRESULT 資訊的例外狀況。

用於 COM Interop。

SEHException

ExternalException

封裝 Win32 結構化例外處理 (Structured Exception Handling) 資訊的例外狀況。

用於 Unmanaged 程式碼 Interop。

請參閱

概念

Exception 類別和屬性

處理例外狀況的最佳作法

處理和擲回例外狀況

其他資源

例外處理基礎觀念