¿Qué es exactamente una excepción de primera oportunidad? ¿Cómo y dónde se origina en un programa .NET? ¿Y por qué se le llama con ese nombre peculiar (de qué 'azar' estamos hablando)?
¿Qué es exactamente una excepción de primera oportunidad? ¿Cómo y dónde se origina en un programa .NET? ¿Y por qué se le llama con ese nombre peculiar (de qué 'azar' estamos hablando)?
Respuestas:
Es un concepto de depuración. Básicamente, las excepciones se lanzan primero al depurador y luego al programa real, donde si no se maneja, se envía al depurador por segunda vez, lo que le da la oportunidad de hacer algo con él en su IDE antes y después de la aplicación. Esto parece ser una invención de Microsoft Visual Studio.
catch
para esto, el control va allí. Si no hay ningún catch
bloqueo, se obtiene el salto de "segunda oportunidad", esta vez el mensaje es Se produjo una excepción no controlada del tipo 'foo' en YourApp.exe . A partir de aquí, intentar continuar o dar un paso más no tendrá éxito.
Las notificaciones de excepción de primera oportunidad se generan cuando se lanza una excepción. Las notificaciones de segunda oportunidad son cuando no se detecta. (Oportunidad - como en la oportunidad de entrar en el código en el depurador).
Empecé a usar el depurador y encontré esto. En mi investigación, encontré la publicación del blog de MSDN ¿Qué es una excepción de primera oportunidad? eso me lo aclaró.
Lo más importante de la publicación del blog para mí es que se refiere a la notificación al depurador, y no a algo que mi código deba manejar necesariamente, y lo más importante, "Los mensajes de excepción de primera oportunidad no significan que haya un problema en el código."
Cuando se depura una aplicación, el depurador recibe una notificación cada vez que se encuentra una excepción. En este punto, la aplicación se suspende y el depurador decide cómo manejar la excepción. El primer paso a través de este mecanismo se denomina excepción de "primera oportunidad".
Dependiendo de la configuración del depurador, reanudará la aplicación y pasará la excepción o dejará la aplicación suspendida y entrará en modo de depuración. Si la aplicación maneja la excepción, continúa ejecutándose normalmente.
La mayoría de los mensajes de excepción de primera oportunidad no significan que haya un problema en el código. Para aplicaciones / componentes que manejan excepciones con elegancia, los mensajes de excepción de primera oportunidad le permiten al desarrollador saber que se encontró y se manejó una situación excepcional.
Desde la perspectiva de un desarrollador, se trata más de una excepción de segunda oportunidad, porque significaría que no se manejó en el código ; por lo tanto, la aplicación se detendría.
La primera oportunidad podría ser muchas de ellas, pero las que más nos preocupan, de nuevo, desde una perspectiva de desarrollo, son la segunda oportunidad, porque conduciría a un bloqueo de la aplicación.
finally
bloques iniciales. Una vez que el sistema decidió quién va a detectar una excepción (y determinó que alguien realmente lo hará), el sistema comenzará a desenrollar la pila. Tenga en cuenta que si se lanza una excepción desde unfinally
bloque ...