Czym dokładnie jest wyjątek pierwszej szansy? Jak i skąd się bierze w programie .NET? I dlaczego nazywa się go tą osobliwą nazwą (o jakiej „szansie” mówimy)?
.net
visual-studio
debugging
exception
first-chance-exception
Frederick The Fool
źródło
źródło
finally
uruchomieniem jakichkolwiek bloków. Gdy system zdecyduje, kto złapie wyjątek (i określi, że ktoś rzeczywiście to zrobi), rozpocznie rozwijanie stosu. Zauważ, że jeśli wyjątek zostanie wyrzucony zfinally
bloku ...catch
na to, kontrola idzie tam. Jeśli nie macatch
bloku, pojawia się przerwa „drugiej szansy”, tym razem komunikat jest Nieobsłużony wyjątek typu „foo” wystąpił w pliku YourApp.exe . Od tego momentu próba kontynuowania lub pójścia dalej nie powiedzie się.Powiadomienia o wyjątkach pierwszej szansy są generowane, gdy zostanie zgłoszony wyjątek. Powiadomienia drugiej szansy pojawiają się, gdy nie zostanie złapany. (Szansa - jak w przypadku możliwości włamania się do kodu w debugerze).
Obsługa wyjątków pierwszej i drugiej szansy
źródło
Właśnie zacząłem używać debuggera i wpadłem na to. Podczas moich badań znalazłem wpis na blogu MSDN Co to jest wyjątek pierwszej szansy? to wyjaśniło to dla mnie.
Najważniejsze wnioski z tego posta na blogu są takie, że odnosi się on do powiadomienia debuggera, a nie do czegoś, co mój kod musiałby koniecznie obsługiwać, a co najważniejsze: „Komunikaty o wyjątkach pierwszej szansy najczęściej nie oznaczają, że jest problem w kod."
źródło
Kiedy aplikacja jest debugowana, debugger jest powiadamiany o każdym napotkaniu wyjątku. W tym momencie aplikacja zostaje zawieszona, a debugger decyduje, jak obsłużyć wyjątek. Pierwsze przejście przez ten mechanizm nazywa się wyjątkiem „pierwszej szansy”.
W zależności od konfiguracji debugera albo wznowi aplikację i przekaże wyjątek, albo pozostawi aplikację zawieszoną i przejdzie w tryb debugowania. Jeśli aplikacja obsługuje wyjątek, nadal działa normalnie.
Komunikaty o wyjątkach pierwszej szansy najczęściej nie oznaczają, że w kodzie jest problem. W przypadku aplikacji / komponentów, które z wdziękiem obsługują wyjątki, komunikaty o wyjątkach pierwszej szansy informują programistę, że napotkano wyjątkową sytuację i została ona obsłużona.
źródło
Z punktu widzenia programisty bardziej dotyczy to wyjątku drugiej szansy, ponieważ oznaczałoby to, że nie został on obsłużony w kodzie ; dlatego aplikacja zostanie zatrzymana.
Pierwsza szansa może być wielu z nich, ale te, o które należy się martwić, znowu, z punktu widzenia programowania, to druga szansa, ponieważ doprowadziłoby to do awarii aplikacji.
źródło