2009-05-04 7 views
0

Je dois implémenter un IExceptionHandler pour la bibliothèque Enteprise 4.1. Dans mon cas particulier, je veux l'utiliser pour enregistrer l'exception à Fogbugz mais les détails intérieurs ne sont pas ce que je demande. Ce dont j'ai besoin est comment - meilleures pratiques - l'implémenter, Comment obtenir la config pour un app.config ou web.config. etc.Bibliothèque d'entreprise Comment implémenter un IExceptionHandler?

je Code Ce jusqu'à présent:

public class LcpFogbugzExceptionHandler : IExceptionHandler { 
    /// <summary> 
    /// Initializes a new instance of the <see cref="LcpFogbugzExceptionHandler"/> class. 
    /// </summary> 
    public LcpFogbugzExceptionHandler() { 
     // <param name="ignore">The ignore.</param> 
     //NameValueCollection ignore 
    } 

    /// <summary> 
    /// Initializes a new instance of the <see cref="T:LcpFogbugzExceptionHandler"/> class. 
    /// </summary> 
    /// <param name="ignore">The ignore.</param> 
    public LcpFogbugzExceptionHandler(NameValueCollection ignore) { 
    } 

    /// <summary> 
    /// Handles the exception. 
    /// </summary> 
    /// <param name="exception">The exception.</param> 
    /// <param name="handlingInstanceId">The handling instance id.</param> 
    /// <returns></returns> 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1300:SpecifyMessageBoxOptions"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Convert.ToBoolean(System.String)")] 
    public Exception HandleException(Exception exception, Guid handlingInstanceId) { 
     // Perform processing here. The exception returned will be passed to the next 
     // exception handler in the chain. 

     return exception; 
    } 

} 

Répondre

2

Je ne suis pas sûr de ce que vous entendez par les meilleures pratiques - vous avez le squelette de code correct afin de remplir juste avec votre mise en œuvre. Points aléatoires pouvant être utiles:

Vous pouvez lire les paramètres de configuration de la manière habituelle (ConfigurationManager etc.). Votre gestionnaire s'exécute dans le même processus et le fil qui a appelé ExceptionPolicy.HandleException en premier lieu. Ce serait une bonne idée de rendre le code du gestionnaire thread-safe, au cas où vous auriez à gérer des exceptions dans plusieurs threads (et si vous ne le faites pas dans ce projet, vous devrez peut-être dans le prochain). Si vous souhaitez passer des données d'instance non statiques dans le gestionnaire à partir du code appelant, vous pouvez remplir le dictionnaire Data de l'exception gérée, qui sera préservée intacte dans toute la chaîne du gestionnaire et vers l'appelant code à nouveau. J'ai utilisé cette technique pour envoyer des données dans un gestionnaire, récupérer les données d'un gestionnaire et permettre à un gestionnaire de contrôler les actions de la prochaine dans la chaîne. Si vous faites cela, assurez-vous que toutes les valeurs Data sont sérialisables.

Questions connexes