共用方式為


設計自訂例外狀況

更新:2007 年 11 月

下列方針可協助您確保自訂例外狀況有正確的設計。

避免使用深層例外狀況階層架構。

如需詳細資訊,請參閱型別和命名空間

要從 System.Exception 或其中一個其他的一般基底例外狀況衍生例外狀況。

請注意,攔截和擲回標準例外狀況類型有一個方針,其中陳述您不應該從 ApplicationException 衍生自訂例外狀況。

要以 Exception 尾碼來當做例外狀況類別名稱的結尾。

一致的命名慣例有助於降低新程式庫的學習曲線。

要讓例外狀況可以序列化;例外狀況必須可序列化,才能跨應用程式定義域和遠端界限正確運作。

如需讓型別可序列化的詳細資訊,請參閱序列化

在所有例外狀況上至少要提供下列的一般建構函式;要確定參數的名稱和型別與下列程式碼範例中所用的相同。

Public Class NewException
    Inherits BaseException
    Implements ISerializable

    Public Sub New()
        MyBase.New()
        ' Add implementation.
    End Sub

    Public Sub New(ByVal message As String)
        MyBase.New()
        ' Add implementation.
    End Sub

    Public Sub New(ByVal message As String, ByVal inner As Exception)
        MyBase.New()
        ' Add implementation.
    End Sub

    ' This constructor is needed for serialization.
    Protected Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext)
        MyBase.New()
        ' Add implementation.
    End Sub
End Class
public class NewException : BaseException, ISerializable
{
    public NewException()
    {
        // Add implementation.
    }
    public NewException(string message)
    {
        // Add implementation.
    }
    public NewException(string message, Exception inner)
    {
        // Add implementation.
    }

    // This constructor is needed for serialization.
   protected NewException(SerializationInfo info, StreamingContext context)
   {
        // Add implementation.
   }
}

要考慮提供例外狀況屬性,以便能夠以程式設計方式存取與此例外狀況相關的額外資訊 (除了訊息字串外)。

Portions Copyright 2005 Microsoft Corporation.All rights reserved.

Portions Copyright Addison-Wesley Corporation.All rights reserved.

如需設計方針的詳細資訊,請參閱由 Krzysztof Cwalina 和 Brad Abrams 所著,並由 Addison-Wesley 於 2005 年發行的「Framework 設計方針:可重複使用之 .NET 程式庫的慣例、慣用語法和模式」一書。

請參閱

概念

選擇要擲回的正確例外狀況類型

其他資源

開發類別庫的設計方針

例外狀況的設計方針