Por exemplo, em um só lugar ...
//---------------a
try
{
// some network call
}
catch(WebException we)
{
throw new MyCustomException("some message ....", we);
}
... e em outro lugar ...
//--------------b
try
{
// invoke code above
}
catch(MyCustomException we)
{
Debug.Writeline(we.stacktrace); // <----------------
}
O stacktrace eu imprimo, ele só começa de a a b, ele não inclui o stacktrace interno da WebException.
Como posso imprimir todo o stacktrace ???
throw;
no lugar dethrow new MyCustomException(...)
se desejar preservar (e gerar) a pilha de exceções original.Respostas:
Eu geralmente uso o método .ToString () em exceções para apresentar as informações completas da exceção (incluindo o rastreamento de pilha interno) no texto:
Saída de amostra:
fonte
ToString
método e imprimem mensagens personalizadas em vez das informações completas (esta é uma prática de codificação ruim, então não faça isso, nunca)ToString
sempre que tenho certeza de que não foi sobrescrito e uso as propriedades diretamente de outra forma (como a resposta de Andrew Hare ).Use uma função como esta:
Então você pode chamá-lo assim:
fonte
ToString
?1. Criar Método: Se você passar sua exceção para a função a seguir, ela fornecerá todos os métodos e detalhes que são os motivos da exceção.
2. Método de chamada: Você pode chamar o método assim.
3. Obtenha o resultado:
fonte
StringBuilder
class.