Джерело: Medium Ця публікація допоможе вам краще зрозуміти, як ефективно обробляти винятки Java.
Обробка винятків Java може бути складним завданням. Іноді важко визначити, які винятки Java потрібно обробляти, які винятки створювати повторно, а які просто ігнорувати. Тим не менш, існує ціла низка корисних рекомендацій, які ефективно допомагають при обробці винятків і створенні нових додатків. Давайте з ними ознайомимося.

- Будьте обережні з тим, що ви логіруєте.
- Не ігноруйте викинуті винятки.
- Використовуйте глобальний обробник винятків.
- Не закривайте ресурси вручну.
- Викиньте раніше і опрацюйте винятки пізніше.
- Винятки Java не повинні логуватися та повторно викликатися.
- Вивчіть пригнічені винятки.
- В операторі throw точно оголошуйте винятки.
- Спочатку опрацюйте найбільш очевидний виняток.
- Використовуйте сучасну семантику обробки винятків.
1. Будьте обережні з тим, що ви логіруєте
Розробники програмного забезпечення завжди повинні знати про права своїх клієнтів на безпеку та конфіденційність.- Java-програма може переміщати дані в інші системи, а працювати з ними (включаючи усунення багів) може величезна кількість розробників та адміністраторів.
- Якщо будь-які конфіденційні дані будуть записані у файли журналів, ваша компанія не буде відповідати вимогам безпеки і ви можете втратити роботу.
2. Не ігноруйте викинуті винятки
Не перехоплюйте виняток, щоб ігнорувати його. Приховування винятків — не найкращий спосіб їх обробки Java. Як мінімум запишіть ім'я виключення та пов'язане з ним повідомлення. Таким чином, інформацію про проблему можна буде дізнатися з вашого запису. Налагодження Java-додатків через приховані винятки неймовірно складне.3. Використовуйте глобальний обробник винятків
Під час виконання програми завжди будуть якісь винятки, які раніше не були перехоплені у вашому коді. Тому завжди додавайте глобальний обробник винятків для обробки неперехоплених винятків. Це не тільки дозволить логувати та обробляти виняток, але також запобігатиме збою програми при виникненні виключення під час виконання.4. Не закривайте ресурси вручну
Ще одна важлива рекомендація при обробці виключень Java - дозвольте JVM викликати метод close() для ресурсів, що закриваються. Не намагайтеся закрити їх самостійно. Цього легко досягти, ініціалізувавши ресурси всередині модуля try-resources . Семантика:
public class TryWithResourcesExample {
public static void main(String[] args) throws Exception {
try (Door door = new Door()) {
door.swing();
} catch (Exception e) { ..... }
} finally { .....}
}
}
Як бачите, після завершення блоку try…catch JVM закриває для вас ресурс, усуваючи можливість складних і важкоусунутих витоків ресурсів.
5. Викиньте раніше та опрацюйте винятки пізніше
Створюйте виняток щоразу, коли у вашому коді виникає умова виключення. Не чекайте на виконання будь-яких рядків коду перед виходом з методу, в якому ви знаходитесь. При перехопленні винятків функція повинна розташовуватись наприкінці методу. Це зменшує кількість блоків catch у ваших методах, полегшуючи читання та підтримку коду.6. Винятки Java не повинні логуватися та повторно викликатися
У разі виключення слід виконати одну з таких дій:- Продовжуйте працювати з вашою програмою, поки ви логуватимете виняток.
- Знову викличте виняток та дозвольте інший спосіб реєстрації даних.
try {
Class.forName("com.min.Example");
} catch (ClassNotFoundException ex) {
log.warning("Class was not found.");
throw ex;
}
Це призводить до дублювання коду і засмічення файлів журналу записами, що повторюються, що значно ускладнює діагностику коду.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ