168 votes

Quelle est la manière appropriée d’afficher l’exception InnerException complète?

Quelle est la bonne façon de montrer mon InnerException complet.

J'ai trouvé que certaines de mes InnerExceptions ont un autre InnerException et cela va assez profond.

InnerException.ToString() fera-t-il le travail à ma place ou dois-je parcourir les InnerExceptions et accumuler String avec StringBuilder ?

257voto

Jon Points 194296

Vous pouvez simplement imprimer exception.ToString() - qui inclura également le texte intégral pour tous les InnerException s imbriqués.

51voto

adrianm Points 7067

J'ai l'habitude de faire comme ça pour enlever la plupart du bruit:

 void LogException(Exception error) {
    Exception realerror = error;
    while (realerror.InnerException != null)
        realerror = realerror.InnerException;

    Console.WriteLine(realerror.ToString())
}    
 

46voto

Rob P. Points 7292

Suffit d'utiliser exception.ToString()

http://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx

L'implémentation par défaut de ToString obtient le nom de la classe qui a jeté l'exception en cours, le message, le résultat de l'appel à ToString sur l'exception interne, et le résultat de l'appel d'Environnement.StackTrace. Si l'un de ces membres est nulle, sa valeur n'est pas incluse dans la chaîne renvoyée.

Si il n'y a aucun message d'erreur ou si c'est une chaîne vide (""), alors pas de message d'erreur est retourné. Le nom de l'exception interne et la trace de la pile sont renvoyés que s'ils ne sont pas null.

exception à la règle.ToString() sera également appeler .ToString() à l'exception de l'exception interne, et ainsi de suite...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X