You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Проблема здесь в том, что вместо того чтобы повалиться прямо при возникновении проблемы, в точке "1", падение будет отложено до точки "2". Бывают гораздо более жёсткие и запутанные ситуации, когда падение надолго откладывается, ошибки проникают в базы данных, живут в продакшене и т. д..
В Java принято действовать строго, именно поэтому есть, например, метод Objects.requireNonNull().
Рекомендую книгу Effective Java автора Joshua Bloch, в частности главу про исключения, Item 65.
The text was updated successfully, but these errors were encountered:
Если вы не можете восстановиться после исключения, вообще не нужно его ловить.
Если это проверяемое (checked) исключение, но вы считаете, что клиент вашей библиотеки не сможет восстановиться при его возникновении, можно обернуть его в непроверяемое (unchecked), например:
catch (SqlException e) {
throw new RuntimeException(e);
}
catch (Exception — это вообще табу: будут проигнорированы любые исключения, в т. ч., например, NullPointerException, которое означает не сбой системы, после которого можно восстановиться, а ошибку программирования.
Добрый день. Читал Хабр, пришёл отсюда: https://habrahabr.ru/post/281226/#comment_8857017
За неимением права комментировать на Хабре, отвечу тут.
Возьмём для примера такой метод:
Попытка использовать этот метод:
Проблема здесь в том, что вместо того чтобы повалиться прямо при возникновении проблемы, в точке "1", падение будет отложено до точки "2". Бывают гораздо более жёсткие и запутанные ситуации, когда падение надолго откладывается, ошибки проникают в базы данных, живут в продакшене и т. д..
В Java принято действовать строго, именно поэтому есть, например, метод Objects.requireNonNull().
Рекомендую книгу Effective Java автора Joshua Bloch, в частности главу про исключения, Item 65.
The text was updated successfully, but these errors were encountered: