JavaRush /Java блог /Random UA /Кава-брейк #158. 10 порад при обробці виключень у Java

Кава-брейк #158. 10 порад при обробці виключень у Java

Стаття з групи Random UA
Джерело: Medium Ця публікація допоможе вам краще зрозуміти, як ефективно обробляти винятки Java. Кава-брейк #158.  10 порад при обробці виключень у Java - 1Обробка винятків Java може бути складним завданням. Іноді важко визначити, які винятки Java потрібно обробляти, які винятки створювати повторно, а які просто ігнорувати. Тим не менш, існує ціла низка корисних рекомендацій, які ефективно допомагають при обробці винятків і створенні нових додатків. Давайте з ними ознайомимося.
  1. Будьте обережні з тим, що ви логіруєте.
  2. Не ігноруйте викинуті винятки.
  3. Використовуйте глобальний обробник винятків.
  4. Не закривайте ресурси вручну.
  5. Викиньте раніше і опрацюйте винятки пізніше.
  6. Винятки Java не повинні логуватися та повторно викликатися.
  7. Вивчіть пригнічені винятки.
  8. В операторі throw точно оголошуйте винятки.
  9. Спочатку опрацюйте найбільш очевидний виняток.
  10. Використовуйте сучасну семантику обробки винятків.

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;

}
Це призводить до дублювання коду і засмічення файлів журналу записами, що повторюються, що значно ускладнює діагностику коду.

7. Вивчіть пригнічені винятки

Пригнічений виняток (suppressed exception) - це нова функція мови, про яку знають не всі розробники. Впроваджуючи перевірений метод із ресурсами, можна одночасно генерувати два винятки. Цю умову легко перевірити, запитивши наявність пригніченого виключення. Єдиний спосіб визначити, чи виникла ця умова — подивитися, чи містить цільовий виняток також пригнічений виняток.

8. При використанні оператора throw вказуйте точні винятки

Застосовуючи оператор throw всередині тіла методу, недбалий розробник використав би загальний клас винятків. Але це не найкращий спосіб обробки винятків Java. Натомість завжди вказуйте точні винятки, які може генерувати цей метод. iЦе допомагає іншим розробникам дізнатися про різні методи обробки помилок, які можна використовувати, коли певний метод не працює належним чином.

9. Спочатку опрацюйте найбільш очевидний виняток

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

10. Використовуйте сучасну семантику обробки винятків

Java надає безліч функцій обробки помилок та винятків, які спрощують розробку та значно скорочують обсяг коду Java. Використовуйте можливість обробляти кілька винятків в одному блоці catch та автоматично закривати ресурси за допомогою блоку try . Застосовуйте Runtime Exceptions, щоб іншим розробникам потім не доводилося обробляти винятки, які ви створюєте.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ