Conception d'exceptions personnalisées
Mise à jour : novembre 2007
L'application des instructions suivantes permet de garantir la conception correcte des exceptions personnalisées.
Évitez les hiérarchies d'exceptions profondes.
Pour plus d'informations, consultez Types et espaces de noms.
Dérivez les exceptions de System.Exception ou de l'une des autres exceptions de base courantes.
Notez qu'une des instructions de la rubrique Interception et levée des types d'exception standard déclare que vous ne devez pas dériver d'exceptions personnalisées de ApplicationException.
Terminez les noms de classes d'exception par le suffixe « Exception ».
Des conventions d'affectation de noms cohérentes contribuent à réduire la durée d'apprentissage pour les nouvelles bibliothèques.
Rendez les exceptions sérialisables. Une exception doit être sérialisable pour fonctionner correctement au-delà des limites d'accès distant et du domaine d'application.
Pour plus d'informations sur la sérialisation d'un type, consultez Sérialisation.
Fournissez (au moins) les constructeurs courants suivants sur toutes les exceptions. Assurez-vous que les noms et types des paramètres sont identiques à ceux utilisés dans l'exemple de code suivant.
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.
}
}
Envisagez de fournir des propriétés d'exception pour l'accès par programme aux informations supplémentaires (à l'exception de la chaîne de message) concernant l'exception.
Portions Copyright 2005 Microsoft Corporation. Tous droits réservés.
Portions Copyright Addison-Wesley Corporation. Tous droits réservés.
Pour plus d'informations sur les instructions de conception, consultez le livre « Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries » de Krzysztof Cwalina et Brad Abrams, publié par Addison-Wesley, 2005.
Voir aussi
Concepts
Choix du type correct d'exception à lever
Autres ressources
Instructions de conception pour le développement de bibliothèques de classes