Comment puis-je ajouter un message à une exception sans perdre aucune information en C#?

J'ai le code suivant:

catch(Exception ex)
{
    throw new FatalException("An error occurred while trying to load the XSLT file.", ex);
}

Cela, malheureusement, juste d'engloutir l'Exception. Je peux résoudre ce problème en procédant comme suit:

catch(Exception ex)
{
    throw;
}

Mais je voudrais quand même d'inclure le message personnalisé pour les aider avec la journalisation des événements.

Comment puis-je ajouter ce message à l'exception sans perte d'information? (trace de la pile/symboles de debug, etc.)

  • Ajouter l'exception d'origine comme un InnerException sur le FatalException?
  • C'est à la fin de throw new FatalException("message", ex).
  • Pourquoi voulez vous faire ce que montrer? Seul hic, les exceptions que vous pouvez faire quelque chose avec. Sinon, laisser bouillonner.
  • Vous pouvez le faire pour ajouter un utilisateur-amical message qui peut être affiché à l'utilisateur, puis effectuez l'enregistrement sur votre propre. Si vous avez FatalException dériver de ApplicationException, vous serez en mesure de facilement identifier les Exceptions que vous avez ajouté des messages contre les Exceptions qui sont jetés n'importe où ailleurs dans le code.
  • Ouais, le point de ce qui est essentiellement d'avoir une interface conviviale message (pour l'enregistrement), mais de conserver l'original de l'information de l'Exception (à des fins de débogage).
  • Découlant de ApplicationException est la pratique recommandée dans le passé, mais n'est-ce pas plus. C'est parce que certains cadre des exceptions en fait dériver de cette classe trop.
  • Merci. J'ai pensé que j'avais lu ça récemment, mais mon boss a m'a juste dit de le faire. Je suppose qu'il n'arrivait pas sur que "mineur" changement dans la pratique. Ainsi, au lieu, faites votre propre base de classe d'Exception et de regarder pour le.

InformationsquelleAutor Codeman | 2013-01-19