共用方式為


例外狀況階層架構

例外狀況的類型有兩種:正在執行之程式所產生的例外狀況,以及 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 類別和屬性
例外狀況概觀
處理例外狀況的最佳作法

其他資源

例外處理基礎觀念
處理和擲回例外狀況