2010-05-07 17 views
6

En mi aplicación estoy usando cuadros de mensaje para mostrar información de error.C# MessageBox Mensajes de error

try 
{ 
    // Something... 
} 
catch (SystemException ex) 
{ 
    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
} 

Esto fue bien al principio, pero como mi programa crece cada vez es más difícil encontrar el bloque try-catch donde se genera este error. ¿Hay alguna forma de mostrar la línea de código o función en la que se generó el error? Estoy usando Microsoft Visual C# 2008 Express Edition. Gracias.

+0

En los casos en que muestra un cuadro de error, a menudo desea ocultar los detalles desordenados (como el StackTrace) del usuario. Sin embargo, recomiendo encarecidamente que registre la excepción en algún lugar (con StackTrace) para que pueda depurarla más tarde. Hay varios buenos paquetes de registro, como NLog o Log4Net, que puede usar para ayudar con esto. –

Respuesta

6

Esto le dará una gran cantidad de información sobre el método que provocó el error (la StackTrace)

1

Sólo mostrar la Exception.StackTrace. Contendrá todo tipo de información útil que debería ayudarlo a encontrar la línea ofensiva de código.

0

Hay Exception.StackTrace, que a menudo es demasiado para un cuadro de mensaje. También Exception.TargetSite.Name debería ser útil también.

0

desea revisar el ex.StackTrace() que le dará todos los detalles de la ubicación de la excepción lanzada. Es posible que también desee comprobar la InnerException.

0

¿Por qué no agrega información adicional al mensaje de error para que pueda encontrarlo más fácilmente? Podría agregar más texto después de la cadena "Error", dependiendo de dónde se crea el cuadro de mensaje.

La excepción que se lanza contiene varias funciones para permitirle obtener una explicación más detallada de un error.

+0

No quiero pensar en un nuevo mensaje de error (que probablemente nunca veré) para cada posible bloque catch. –

+0

Me refiero a lo largo de las líneas de usar el ex.ToString(), no agregando texto manualmente. –

0

Hay algunas opciones que tiene disponibles para usted.

  1. poner algo en su buzón de mensajes si se quiere dar información de contexto
  2. Mostrar la información de seguimiento de la pila, si en una versión de depuración números de línea se incluirán

Sin embargo, yo advertiría alrededor esta práctica, si descubre que está obteniendo demasiados y no puede determinar dónde, comenzaría a revisar la estructura del código para asegurarse de que no tenga problemas.

+0

No quiero pensar en un nuevo mensaje de error (que probablemente nunca veré) para cada posible bloque catch. –