JavaRush /Java блог /Random /Кофе-брейк #158. 10 советов при обработке исключений в Ja...

Кофе-брейк #158. 10 советов при обработке исключений в Java

Статья из группы Random
Источник: 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, чтобы другим разработчикам не приходилось потом обрабатывать исключения, которые вы создаете.
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ