2009-05-21 16 views
5

Quiero que el diseñador detecte el error cuando estoy depurando y quiero que el usuario vea mi mensaje amistoso si ocurre un error para ellos. Sé que puedo acomplish esto con lo siguiente:¿Hay una manera mejor de hacer que visual studio ignore try/catch en modo de depuración?

#If Debug=False Then 

Try 

#End If 

'some code here 

#If Debug=False Then 

Catch ex as exception 

    Messagebox.Show("Errors suck") 

End Try 

#End If 

yo no quiero tener que escribir todos los #statements y para que estén estorbando en mi código. Parece que esto debería ser una necesidad común y tiene que haber una mejor manera. ¿Alguien sabe una mejor manera?

+0

¿Alguna vez resolvió esto con éxito? ¿Aún necesitas ayuda con esto? – jcolebrand

Respuesta

0

En la sección catch de su Try..Catch debe escribir el mensaje de excepción, stacktrace y cualquier otra cosa que desee en un archivo de registro; adicionalmente, también podría escribir esos datos en el registro de eventos de Windows.

En el peor de los casos, podría poner puntos de quiebre en la sección Captura de sus bloques Try..Catch, ya que normalmente no debería golpearlos, no debería ser un gran problema una vez configurada.

15

En VS.NET puede decir si desea que el depurador se rompa cuando una excepción es lanzada (no solo cuando no está controlada).

Mira en la depuración | Excepciones ... elemento de menú (Ctl-Alt-E en mis atajos de teclado). Elija la excepción que le interese, luego marque la casilla "arrojado" para esa excepción.

Puede marcar esa casilla en varios niveles (todas las excepciones CLR, todas las excepciones CLR en un espacio de nombres dado, o excepciones muy específicas)

3

No hay una buena manera de conseguir que se ignore un intento de captura distinto de lo has hecho. Pero puedes hacer que el código sea un poco más limpio y esencialmente obtener el mismo efecto. Básicamente, estás intentando evitar que se ejecute la acción en el bloque catch. Una mejor manera de hacerlo es un método compilado condicionalmente.

Try 
... 
Catch ex As Exception 
    DebugLog(ex) 
    Throw 
End Try 

<Condition("DEBUG)> _ 
Public Sub DebugLog(ByVal ex As Exception) 
    Messagebox.Show("errors suck") 
End Sub 
0

Me di cuenta de que nunca marcó nada como aceptado aquí. ¿Has oído hablar de la Programación Orientada a Aspectos? Esto es en realidad similar a algo que estoy buscando implementar en un nuevo proyecto, así que tenía curiosidad por saber si había hecho algo más con esto. Además de ser una pregunta de hace un año ... es posible que haya hecho algo y no haya podido seguirlo.

Y entonces me doy cuenta de que parece que la pregunta no ha cerrado su cuenta ...

0

Aquí es cómo lo hago:

Activado:

Try ' : Catch: End Try 
    doSomething 
    andSomeMore 
    etcEtc 
' Try 
Catch ex As Exception 
    handleException 
End Try 

deshabilitar el anterior eliminando los dos caracteres de comentario:

Try : Catch : End Try 
    doSomething 
    andSomeMore 
    etcEtc 
Try 
Catch ex As Exception 
    handleException 
End Try 
Cuestiones relacionadas