Не ловіть Throwable Ви можете використовувати це в пропозиції catch, але ніколи не повинні цього робити! Якщо ви використовуєте Throwable у пропозиції catch, він не тільки перехопить усі винятки; він також виловить усі помилки. Помилки видаються JVM, щоб вказати на серйозні проблеми, які не призначені для обробки програмою.
Якщо ваш код не може відновитися після виняткової ситуації, не перехоплюйте її. Увімкніть методи вище стека викликів для відновлення, якщо це можливо. Очистіть ресурси, виділені за допомогою операторів using або блоків finally. Віддавайте перевагу операторам для автоматичного очищення ресурсів, коли виникають винятки.
Якщо метод не може належним чином обробити виняток, його слід викинути. Зазвичай ви створюєте виняток, коли хочете повідомити абонента методу про деякі збої. Як говорили інші, як правило, ви повинні перехопити виняток, коли ви можете його впоратися, інакше просто викиньте його.
🔴 Вибір між спробою-ловою та кидком: 👉 Використовуйте функцію try-catch, якщо ви хочете негайно обробити винятки в поточному блоці коду. 👉 Використовуйте кидки, коли ви хочете делегувати відповідальність за обробку винятків методу виклику.
З метою перевірки винятків під час компіляції, Throwable та будь-який підклас Throwable, який також не є підкласом RuntimeException або Error, вважаються перевіреними винятками.
Загальний принцип полягає в тому, щоб зловити найбільш конкретний тип, який ви можете. catch(Exception) є поганою практикою, оскільки він також перехоплює всі RuntimeException (неперевірені винятки).. Це може бути специфічно для Java: іноді вам потрібно буде викликати методи, які створюють перевірені винятки.
Перехоплення загальних типів винятків може приховати проблеми під час виконання від користувача бібліотеки та може ускладнити налагодження.