При виникненні виключення відладчик записує його повідомлення у вікно «Висновок». Він може перервати виконання в наступних випадках:
якщо виключення виникає і не обробляється;
якщо відладчик налаштований на переривання виконання відразу ж після виникнення виключення, до виклику будь-якого обробника;
якщо заданий параметр Тільки мій код і відладчик налаштований на переривання з будь-якого виключення, що не обробляється в коді користувача.
У ASP.NET існує обробник виключень верхнього рівня, що відображає станиці помилок в браузері. Він не перериває виконання до тих пір, поки не буде включений параметр Тільки мій код. Приклад см. В розділі Налаштування відладчика для відновлення виконання при виникненні не оброблені користувачем винятків нижче.
У додатках, написаних на Visual Basic, відладчик управляє всіма помилками як винятками, навіть при використанні обробників помилок типу On Error.
У вікні Параметри винятків можна вказати, які виключення (або набори винятків) приведуть до переривання роботи відладчика, і на цьому етапі потрібно зробити цей останов. Можна додавати або видаляти виключення або задавати винятку, при виникненні яких виконується переривання. Відкрийте це вікно у відкритому рішенні, послідовно вибравши Налагодження / Вікна / Параметри винятків.
Для пошуку конкретних винятків можна скористатися вікном Пошук на панелі інструментів Параметри винятків або застосувати функцію пошуку для фільтрації певних просторів імен (наприклад, System.IO).
Налаштування відладчика для переривання виконання при створенні виключення
Отладчик може перервати виконання програми в точці виникнення виключення, надаючи, таким чином, шанс перевірки виключення ще до виклику обробника.
При перевірці даного виключення виконання відладчика буде перериватися всюди, де виникає це виняток незалежно від того, обробляється воно чи ні. На цьому етапі виключення називається першим примірником виключення. Нижче наведено кілька прикладів.
У наступному консольному додатку C # метод Main створює виняток AccessViolationException всередині блоку Try / Catch.
Якщо виняток AccessViolationException відзначено у вікні Параметри винятків. при виконанні цього коду в режимі відладчика відбудеться зупинка на рядку Throw в методах ThrowHandledException () і ThrowUnhandledException ().
Щоб відновити задані за замовчуванням параметри винятків, натисніть кнопку Відновити на панелі інструментів.
Налаштування відладчика для відновлення виконання при виникненні не оброблені користувачем винятків
У вікні Параметри винятків відкрийте контекстне меню, клацнувши у вікні правою кнопкою миші, а потім виберіть команду Показати стовпці. (Якщо параметр Тільки мій код відключений, дана команда не відображається.)
З'явиться другий стовпець з ім'ям Додаткові дії. У цьому стовпці відображається повідомлення Продовжувати, якщо не обробляється в призначеному для користувача коді при конкретних винятки. Це означає, що відладчик не припиняє виконання, якщо виключення не обробляється в призначеному для користувача коді, а обробляється в зовнішньому коді.
Наприклад, веб-додатки ASP.NET обробляють виключення шляхом їх перетворення в код стану HTTP 500 (Обробка винятків в API ASP.NET), що може утруднити визначення джерела виключення. У наступному прикладі для користувача код викликає метод String.Format (). який створює FormatException. Виконання переривається наступним чином.
Додавання і видалення винятків
Перевірте правильність написання! У вікні Параметри винятків не перевіряється існування доданого виключення. Тому при введенні Sytem.UriTemplateMatchException з'явиться запис для цього винятку (а не для System.UriTemplateMatchException).
Параметри виключення зберігаються в файл SUO рішення і, таким чином, застосовуються до конкретного вирішення. Параметри конкретного винятку не можна повторно використовувати в рішеннях. На цьому етапі зберігаються тільки додані виключення. Дистанційні виключення не зберігаються. Іншими словами, можна додати виняток, закрити і повторно відкрити рішення - виняток буде перебувати в ньому як і раніше. Однак при видаленні виключення, закриття і повторне відкриття рішення виняток з'явиться знову.
У вікні Параметри винятків підтримуються універсальні типи винятків на C #, але не на Visual Basic. Щоб робити останов при виникненні таких винятків, як MyNamespace.GenericException