2011-04-12 22 views
5

Probé la interceptación de excepciones, por lo tanto, no necesito que Visual Studio se interrumpa en thinkgs como thrown new NullReferenceException("myVar").Evitar que Visual Studio se rompa al lanzar excepciones

que tienen la siguiente bajo debug => Excepciones

enter image description here

sin embargo, VS rompe en las excepciones. ¿Que debería hacer?

PS.

para la aplicación excepción no controlada, que "atrapar" usando el Application.UnhandledException como en el siguiente:

''' <summary>Occurs when the application encounters an unhandled exception.</summary> ' 
Private Sub Application_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException 
    Dim message As String = String.Format("An application UnhandledException were thrown.{1}The application will now terminate.{1}'{0}'{1}{1}StackTrace:{1}{2}", e.Exception.Message, Environment.NewLine, e.Exception.StackTrace) 
    MessageBox.Show(message) 
End Sub 
+0

intente atraparlo si es posible? – lxcid

+0

Eso solo muestra que VS no infringe todas las excepciones cuando se lanzan. Debería profundizar en el nodo de Excepciones de CLR para ver si se verifican las excepciones individuales. – CodeNaked

+0

@CodeNaked: verificado: System.NullReferenceException no está marcado. – serhio

Respuesta

2

Si se lanza una excepción que no se maneja cualquier parte del código, Visual Studio se va romper. No tiene otra opción: hubo una excepción no controlada. Fuera de Visual Studio, la aplicación mostraría un mensaje de error e informaría al usuario que se produjo una excepción no controlada.

Las opciones que ve en el cuadro de diálogo Depurar -> Excepciones solo le permiten configurar si Visual Studio se rompe en todas las excepciones, incluidas las que se manejan posteriormente en su código. A menudo se los denomina excepciones de "primera oportunidad".

Además de eso, nunca debe arrojar un NullReferenceException usted mismo; esta es una excepción de tiempo de ejecución que está reservada para el marco de tiempo de ejecución. En su lugar, debe lanzar un ArgumentNullException.

+0

Ver mi ** PS **. En cuanto a su comentario, tal vez tiene razón, de todos modos, MSDN simplemente informa 'Tenga en cuenta que las aplicaciones arrojan la excepción ArgumentNullException en lugar de la excepción NullReferenceException ...' – serhio

4

Tuve el mismo problema cuando comencé a usar VS2010. Tengo pruebas unitarias, que esperan excepciones, y tiro excepciones de mis funciones. Se supone que estas excepciones deben ser manejadas por el usuario de mi biblioteca. En el cuadro de diálogo Depuración-> Excepciones, desactivé la casilla de verificación en la columna Usuario-No controlado para las excepciones de Common Language Runtime, y VS dejó de romper estas excepciones. Por cierto, no veo la segunda columna en el diálogo que adjuntó aquí.

+0

FYI, la opción de depuración "Habilitar solo mi código (solo administrado)" debe ser verificado para ver la columna "Usuario no manejado" en la ventana de Excepciones. –

0

El siguiente método funciona para mí en Visual Studio 2015 (un proceso similar puede funcionar para VS2010).

Tomado del Visual Studio documentation on managing exceptions with the debugger:

  1. En la ventana de configuración de la excepción, abra el menú contextual haciendo clic derecho en la ventana y seleccionando Mostrar columnas. (Si ha desactivado Just My Code, no verá este comando.)
  2. Debería ver una segunda columna denominada Acciones adicionales. Esta columna muestra Continuar cuando no se maneja por el código de usuario en excepciones específicas, lo que significa que el depurador no se rompe si esa excepción no se maneja en el código del usuario sino que se maneja en código externo.
  3. Puede cambiar esta configuración para una excepción particular (seleccione la excepción, haga clic con el botón derecho y seleccione/deseleccione Continuar cuando no se maneje en Código de usuario) o para una categoría completa de excepciones (por ejemplo, todas las excepciones de Common Language Runtime)
Cuestiones relacionadas