123 votes

Qu'est-ce qu'une "exception de première chance" ?

Qu'est-ce qu'une exception de première chance ? Comment et où trouve-t-elle son origine dans un programme .NET ? Et pourquoi porte-t-elle ce nom particulier (de quel "hasard" s'agit-il ?)?

95voto

annakata Points 42676

C'est un concept de débogage. En fait, les exceptions sont envoyées au débogueur. premièrement puis vers le programme proprement dit où, s'il n'est pas traité, il est transmis au débogueur sous la forme d'un message d'erreur segundo temps, vous donnant un chance pour en faire quelque chose dans votre IDE avant et après l'application elle-même. Il semble que ce soit une invention de Microsoft Visual Studio.

26 votes

C'est plus qu'un concept de débogage ; C# ne fournit pas un moyen pratique d'observer la gestion des exceptions à deux passages au moment de l'exécution, mais vb.net le fait. Fondamentalement, lorsqu'une exception est levée, le temps d'exécution commence par chercher dans la pile d'appels pour savoir qui, si quelqu'un, va l'attraper. Ce processus a lieu antes de tout finally les blocs courent. Une fois que le système a décidé qui va attraper une exception (et déterminé que quelqu'un va effectivement le faire), le système va commencer à dérouler la pile. Notez que si une exception est lancée à partir d'un bloc finally bloc...

25 votes

...le code qui s'attendait à attraper l'exception originale peut finir par ne pas le faire ; il y a beaucoup de cas de coin bizarres.

10 votes

Cela se produit lorsque vous avez configuré le débogueur pour qu'il s'interrompe à tout moment. jeté (pas seulement les exceptions non gérées), ou si vous "passez" dans une déclaration qui lance. Vous voyez le message Une exception de première chance de type 'foo' s'est produite dans YourApp.exe. . Vous pouvez encore continuer (F5) ou aller plus loin (F11). Ensuite, s'il y a un catch pour ça, le contrôle va là. S'il n'y a pas de catch bloc, vous obtenez la pause "seconde chance", cette fois le message est Une exception non gérée de type 'foo' s'est produite dans YourApp.exe. . A partir de là, essayer de continuer ou d'aller plus loin ne sera pas couronné de succès.

25voto

Ian G Points 3498

Les notifications d'exception de première chance sont émises lorsqu'une exception est levée. Les notifications de seconde chance sont émises lorsque l'exception n'est pas levée. (Chance - comme dans l'opportunité de pénétrer dans le code dans le débogueur).

Traitement des exceptions de première et deuxième chance

7voto

codingatty Points 312

Je viens de commencer à utiliser le débogueur et j'ai rencontré ce problème. Dans mes recherches, j'ai trouvé l'article du blog MSDN Qu'est-ce qu'une exception de première chance ? qui a clarifié la situation pour moi.

Ce que je retiens de cet article de blog, c'est qu'il s'agit d'une notification au débogueur, et non d'un élément que mon code devrait nécessairement gérer, et surtout, c'est le plus important,

"Le plus souvent, les messages d'exception de première chance ne signifient pas qu'il y a un problème dans le code. problème dans le code".

1voto

Agustin Garzon Points 188

Du point de vue d'un développeur, il s'agit plutôt d'une exception de seconde chance, car cela signifierait que il n'a pas été traité dans le code ; par conséquent, l'application s'arrêterait.

Il peut s'agir d'un grand nombre d'entre elles, mais celles dont il faut se préoccuper le plus, encore une fois, du point de vue du développement, sont les secondes, car elles conduiraient à un plantage de l'application.

0voto

David Points 55

Lorsqu'une application est en cours de débogage, le débogueur est notifié dès qu'une exception est rencontrée. À ce moment-là, l'application est suspendue et le débogueur décide comment traiter l'exception. Le premier passage par ce mécanisme est appelé exception de "première chance".

Selon la configuration du débogueur, il reprendra l'application et transmettra l'exception ou laissera l'application suspendue et entrera en mode débogage. Si l'application gère l'exception, elle continue à s'exécuter normalement.

Le plus souvent, les messages d'exception de première chance ne signifient pas qu'il y a un problème dans le code. Pour les applications ou les composants qui gèrent les exceptions de manière élégante, les messages d'exception de première chance indiquent au développeur qu'une situation exceptionnelle a été rencontrée et traitée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X