Что такое исключение при первой возможности? Как и откуда он возникает в программе .NET? И почему он назван таким своеобразным именем (о каком «шансе» мы говорим)?
Что такое исключение при первой возможности? Как и откуда он возникает в программе .NET? И почему он назван таким своеобразным именем (о каком «шансе» мы говорим)?
Ответы:
Это концепция отладки. Обычно исключения сначала отправляются в отладчик, а затем в реальную программу, где, если она не обрабатывается, она передается отладчику во второй раз, что дает вам возможность что-то сделать с ней в вашей среде IDE до и после самого приложения. Похоже, это изобретение Microsoft Visual Studio.
catch
для этого есть, контроль переходит туда. Если catch
блока нет , вы получите «второй шанс» прерывания, на этот раз сообщение - Необработанное исключение типа 'foo' произошло в YourApp.exe . Отсюда попытка продолжить или сделать следующий шаг будет безуспешной.
Уведомления об исключении первого шанса возникают при возникновении исключения. Уведомления второго шанса - это когда они не обнаруживаются. (Вероятность - как возможность взломать код в отладчике).
Я только начал использовать отладчик и столкнулся с этим. В своем исследовании я нашел сообщение в блоге MSDN Что такое исключение при первой возможности?это прояснило это для меня.
Важные выводы из сообщения в блоге для меня заключаются в том, что оно относится к уведомлению отладчику, а не к тому, что мой код обязательно должен обрабатывать, и, что наиболее важно, «сообщения об исключении первого шанса чаще всего не означают, что проблема в код."
Когда приложение отлаживается, отладчик получает уведомление всякий раз, когда возникает исключение. На этом этапе приложение приостанавливается, и отладчик решает, как обработать исключение. Первый проход через этот механизм называется исключением "первого шанса".
В зависимости от конфигурации отладчика он либо возобновит работу приложения и передаст исключение, либо оставит приложение приостановленным и войдет в режим отладки. Если приложение обрабатывает исключение, оно продолжает нормально работать.
Сообщения об исключении первого шанса чаще всего не означают, что в коде есть проблема. Для приложений / компонентов, которые изящно обрабатывают исключения, сообщения об исключении первого шанса позволяют разработчику узнать, что возникла и обработана исключительная ситуация.
С точки зрения разработчика, это больше касается второго исключения, потому что это означало бы, что оно не было обработано в коде ; поэтому приложение остановится.
Первого шанса может быть много, но те, о которых нужно беспокоиться больше, опять же, с точки зрения разработки, - это второй шанс, потому что это приведет к сбою приложения.
finally
запуска любых блоков. Как только система решит, кто перехватит исключение (и определит, что кто-то действительно перехватит), система начнет раскручивание стека. Обратите внимание, что если исключение выбрасывается изfinally
блока ...