Що таке "перший виняток"?


Відповіді:


78

Це концепція налагодження. В основному винятки переносяться спочатку до налагоджувача, а потім до фактичної програми, де, якщо з нею не обробляється, він потрапляє до налагоджувача вдруге , що дає вам можливість зробити щось із цим у своєму IDE до та після самого додатка. Схоже, це винахід Microsoft Visual Studio.


21
Це більше, ніж концепція налагодження; C # не забезпечує зручний спосіб спостереження за обробкою винятків з двома проходами під час виконання, але vb.net робить це. В основному, коли викинутий виняток, час запуску починається з пошуку стека викликів, щоб з’ясувати, хто якщо хто збирається його спіймати. Цей процес відбувається доfinally запуску будь-яких блоків. Як тільки система вирішила, хто збирається зловити виняток (і визначила, що хтось насправді збирається), система почне розмотувати стек. Зауважте, що якщо виняток буде викинуто з finallyблоку ...
supercat

18
... код, який очікував спіймати оригінальний виняток, може не зробити цього; є багато дивних кутових випадків.
supercat

5
Це трапляється, коли ви налаштували налагоджувач для порушення всіх викинутих винятків (не лише необроблених винятків), або якщо ви "вступили" в якийсь вислів, який викидає. Ви бачите повідомлення Перший випадковий виняток типу "foo" стався в YourApp.exe . Ви все ще можете продовжити (F5) або крокувати далі (F11). Потім, якщо є catchдля цього, контроль переходить туди. Якщо catchблоку немає , ви отримуєте перерву "другого шансу", цього разу повідомлення є Неопрацьованим винятком типу "foo" у YourApp.exe . Звідси намагання продовжувати чи крокувати далі не матиме успіху.
Джеппе Стіг Нільсен

@supercat: Як я дізнаюся про деталі, як ти згадав у своїх коментарях вище? Це результат самоексперименту? читання книг (яка)? Це дуже вражаюче розуміння! Буду вдячний, якщо ви можете скористатися хвилиною, щоб відповісти на це будь ласка ...
anish

2
@NoSaidTheCompiler: я читав про обробку винятків у різних блогах; Я б очікував, що пошук "фільтра виключень .net" повинен з'явити деякі блоги на цю тему.
supercat

17

Повідомлення про виняток із першого шансу виникають, коли викидає виняток. Повідомлення про другий шанс - це коли його не спіймали. (Шанс - як у можливості прорватися до коду у відладчику).

Перший та другий шанси обробка виключень


посилання порушено ще одне посилання: blogs.msdn.microsoft.com/davidklinems/2005/07/12/…
amit jha

4

Я тільки почав використовувати налагоджувач і наткнувся на це. У своєму дослідженні я виявив повідомлення в блозі MSDN Що таке виняток з першого шансу? що прояснило це для мене.

Для мене великі виводи з публікації в блозі - це те, що воно стосується повідомлення про відладчик, а не те, з чим міг би обов'язково обробляти свій код, і найголовніше: "Повідомлення про виключення першого шансу найчастіше не означають, що є проблема в код ".


Будь ласка, введіть уривок ( не всю статтю ) того, що вам було корисно за цим посиланням. Була попередня відповідь лише на те, що було видалено.
Марк Холл

Для мене великі переваги полягають у тому, що це стосується сповіщення про відладчик, а не те, з чим міг би обов'язково обробляти свій код, а головне: "Повідомлення про виключення першого шансу найчастіше не означають, що в коді є проблеми".
кодування

Я додав ваш коментар до вашої відповіді, я вважаю, що посилання є досить важливим, щоб тримати його, я намагаюся переконатися, що він не буде вважатися відповіддю лише як попередній раз, коли він був наданий.
Марк Холл

0

Коли програма налагоджується, про відладчик отримує повідомлення, коли виникає виняток. У цей момент додаток призупиняється, і налагоджувач вирішує, як обробити виняток. Перший прохід через цей механізм називається винятком "першого шансу".

Залежно від конфігурації налагоджувача, він або відновить додаток і передасть виняток, або залишить програму призупиненою та вступить у режим налагодження. Якщо програма обробляє виняток, вона продовжує працювати нормально.

Повідомлення про виключення першого шансу найчастіше не означають проблеми в коді. У додатках / компонентах, які випрацьовують винятки витончено, повідомлення про винятки з першої випадковості повідомляють розробника про те, що виникла виняткова ситуація та була вирішена.


0

З точки зору розробника, це більше стосується виключення, що стосується другого шансу, оскільки це означатиме, що він не оброблявся в коді ; тому додаток буде припинено.

Перший шанс може бути багатьма з них, але ті, що турбуються про більше, знову ж таки, з точки зору розвитку, - це другий шанс, оскільки це призведе до збою додатків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.