¿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)?
.net
visual-studio
debugging
exception
first-chance-exception
Frederick el tonto
fuente
fuente
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 ...catch
para esto, el control va allí. Si no hay ningúncatch
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).
Manejo de excepciones de primera y segunda oportunidad
fuente
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."
fuente
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.
fuente
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.
fuente