Обробка винятків

Рекомендується перехоплювати специфічні виключення, коли Ви розумієте, чому вони генеруються в даному контексті.

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

Не зловживайте перехопленнями. Часто винятків слід дозволяти переходити вгору по стеку викликів.

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

Використовуйте "try-finally" і уникайте використання "try-catch" для ігнорування виключення. В добре написаному коді обробки виключення "try-finally" зустрічається набагато частіше, ніж "try-catch".

Метою оператора catch є обробка винятків (наприклад, реєстрація нефатальних помилок). Метою оператора finally є виконання коду незалежно від того, чи було генерувати виняток. При розміщенні дорогих або обмежених ресурсів, таких як сполуки з базами даних або потоками, розміщуйте код в блок finally.

Переважно використання порожній генерації при захопленні і повторної генерації виключення. Це кращий спосіб зберегти стек виклику винятків.

У наступному прикладі коду показаний метод генерації виключення. Цей метод використовується в наступних прикладах.