Quiero lanzar una excepción pero con un mensaje personalizado y persistir stacktrace también. He pasado por varios hilos.Lanzar excepción pero persistir el seguimiento de la pila
catch (Exception ex)
{
throw; // Message is read only but stacktrace persist
throw ex; // Message is readonly and strack trace also blows .. worst!
throw new CustomException("My exception");// Message can be overridden but stacktrace lost
throw new CustomException("My message",ex);// same as above. However if this constructor in exception class calls same constructor of base class then .. see below
}
Cuando se utiliza la última appraoch (con el constructor excepción personalizada llamando al constructor de la clase base), la salida en la pantalla de la muerte es algo así como:
**The remote server returned an error: (401) Unauthorized.**
[WebException: The remote server returned an error: (401) Unauthorized.]
original stack trace
[NewException: newMessage]
New Stack Trace
Lo bueno es que todo está allí en la pantalla. Pero, en la parte superior, quiero que mi excepción se muestre, es decir, "mensaje nuevo" y no el mensaje original.
Por lo tanto, reconciliando mi pregunta: ¿CÓMO puedo mostrar en la pantalla de la muerte el trazado original de la pila pero con un mensaje de error personalizado?
Es éste un servicio web volviendo la excepción? – Oded
En mi ejemplo, de hecho es una llamada de servicio web. Sin embargo, es inmaterial, ya que la excepción podría haber sido algo como DivisionByZero o sqlException, etc. Idea es permitir que el usuario conozca el rastro original de la pila, pero el desarrollador también puede personalizar el mensaje de excepción predeterminado a uno más útil. – helloworld
No, no es inmaterial. Los marcos del servicio web tienen sus propias ideas sobre excepciones. –