Використовуйте властивість InnerException, щоб отримати набір винятків, які призвели до поточного винятку. Ви можете створити новий виняток, який перехоплює попередній виняток. Код, який обробляє другий виняток, може використати додаткову інформацію з попереднього виключення, щоб відповідніше обробити помилку.
C# дозволяє вкладені блоки try-catch. Під час використання вкладених блоків try-catch виняток буде перехоплено в першому відповідному блоці catch, який слідує за блоком try, де сталася виняток. У наведеному вище прикладі буде виконано внутрішній блок catch, оскільки це перший блок catch, який обробляє всі типи винятків.
Ви можете явно створити виняток за допомогою C# throw або оператора Visual Basic Throw. Ви також можете знову створити спійманий виняток за допомогою оператора throw. Хорошою практикою кодування є додавання інформації до винятку, який повторно створюється, щоб надати більше інформації під час налагодження.
Об’єкти винятків, які описують помилку, створюються, а потім викидаються оператором або виразом throw. Потім середовище виконання шукає найбільш сумісний обробник винятків. публічний клас ProgramLog { FileStream logFile = null!; public void OpenLog(FileInfo fileName, FileMode mode) { } public void WriteLog() { if (!
Використовуйте блок try навколо операторів, які можуть створювати винятки. Як тільки в блоці try виникає виняток, потік керування переходить до першого пов’язаного обробника винятків, який присутній будь-де в стеку викликів. У C# ключове слово catch використовується для визначення обробника винятків.
Раннє створення винятків Якщо ми хочемо продовжувати створювати винятки в конструкторах, нам потрібно розглянути порядок операцій. Нам слід створювати винятки якомога раніше та залишати будь-які розподіли чи операції з некерованими ресурсами пізніше в конструкторі.