Comment imprimer la trace de la pile d'exception?
Par exemple, dans un endroit...
//---------------a
try
{
//some network call
}
catch(WebException we)
{
throw new MyCustomException("some message ....", we);
}
...et dans un autre endroit...
//--------------b
try
{
//invoke code above
}
catch(MyCustomException we)
{
Debug.Writeline(we.stacktrace); //<----------------
}
La stacktrace j'ai l'impression, seulement à partir de a à b,
il ne comprennent pas l'intérieur stacktrace de la WebException.
Comment puis-je imprimer toutes les stacktrace???
- Notez que la stacktrace pour les originaires WebException ne serait pas imprimé parce que vous avez jeté une nouvelle exception plutôt que de la re-jeter le WebException. Utilisation
throw;
en lieu et place dethrow new MyCustomException(...)
si vous souhaitez conserver (et de sortie) l'original de la pile d'exception.
Vous devez vous connecter pour publier un commentaire.
J'ai l'habitude d'utiliser l' .La méthode ToString() sur les exceptions pour présenter l'entière exception de l'information (y compris l'intérieur de la trace de pile) dans le texte:
Exemple de sortie:
ToString
méthode et d'imprimer des messages personnalisés au lieu de l'intégralité de l'information (ce qui est une mauvaise pratique de codage, donc, ne pas le faire, jamais)ToString
chaque fois que je suis sûr qu'il n'est pas remplacé, et utiliser les propriétés directement dans le cas contraire (comme Andrew Hare, réponse).Utiliser une fonction comme ceci:
Ensuite, vous pouvez l'appeler comme ceci:
ToString
?1. Méthode de création: Si vous passer vos exception à la fonction suivante, il vous donnera toutes les méthodes et tous les détails qui sont les raisons de l'exception.
2. Appel de la Méthode: Vous pouvez appeler la méthode de ce genre.
3. Obtenir le Résultat:
StringBuilder
classe.