Источник: 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;
}
Это приводит к дублированию кода и засорению файлов журнала повторяющимися записями, что значительно усложняет диагностику кода.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ