Por ejemplo, en un lugar ...
//---------------a
try
{
// some network call
}
catch(WebException we)
{
throw new MyCustomException("some message ....", we);
}
... y en otro lugar ...
//--------------b
try
{
// invoke code above
}
catch(MyCustomException we)
{
Debug.Writeline(we.stacktrace); // <----------------
}
El stacktrace que imprimo, solo comienza de aab, no incluye el stacktrace interno de WebException.
¿Cómo puedo imprimir todo el stacktrace?
throw;
en lugar dethrow new MyCustomException(...)
si desea conservar (y generar) la pila de excepciones original.Respuestas:
Normalmente uso el método .ToString () en excepciones para presentar la información completa de la excepción (incluido el seguimiento de la pila interna) en el texto:
Salida de muestra:
fuente
ToString
método e imprimen mensajes personalizados en lugar de la información completa (esta es una mala práctica de codificación, así que no haga eso, nunca)ToString
siempre que estoy seguro de que no se sobrescribe, y uso las propiedades directamente de lo contrario (como la respuesta de Andrew Hare ).Usa una función como esta:
Entonces puedes llamarlo así:
fuente
ToString
?1. Crear método: si pasa su excepción a la siguiente función, le dará todos los métodos y detalles que son los motivos de la excepción.
2. Llamar al método: puede llamar al método de esta manera.
3. Obtenga el resultado:
fuente
StringBuilder
class.