использование Повторное выбрасывание проверить / непроверенные исключения?

Обновить

December 2018

Просмотры

1.2k раз

1

Что такое использование Повторное выбрасывание проверяемых и непроверяемых исключений?

2 ответы

7

Если вы хотите выполнить некоторый код, когда проблема происходит, не скрывая проблему.

Например, предположим, что вы хотите откатить изменения, если исключение происходит при записи в базу данных:

try {
    writeToDatabase();
} catch(Exception ex) {
    rollbackChanges();
}

Если вы используете этот код, вызываемая функция никогда не узнает, что произошло исключение.

Вместо этого вы должны написать

try {
    writeToDatabase();
} catch(Exception ex) {
    rollbackChanges();
    throw ex;
}
1

Чтобы быть несколько тупой: использовать обработку исключений.

Рассмотрим это до исключения (или, перед тем, как разработчик понимает , как правильно использовать обработку исключений) программисты возвращают коды ошибок , как -1 или nullесли что - то «пошло не так». Имея это в виду, как бы вы сказать что - то несколько методов назад , что это не удалось (например , некоторый уровень метод низкий IO в большом API не удалось)? Вы можете либо строка много возврата nullс / или -1 вместе, или просто выбросить исключение , так что он мигрирует обратно куда - то , где он должен быть пойман, даже самой виртуальной машины Java , если это необходимо , так как это исключение может что - то вы не можете оправиться от ,

Таким образом , в принципе, вы бы повторно выдать исключение , если вы не в состоянии написать поймать логику , которая действительно может оправиться от брошенного исключения. Это часто бывает в Java , поскольку Java заставляет вас поймать почти все свои исключения , так как большинство все это проверяется исключение.

Что касается Повторного выбрасывания проверено против непроверенных ... Часто я кину новое непроверенное исключение ( RuntimeExpcetion) внутри проверяемого исключения обратно до контейнера при выполнении приложений J2EE. Контейнер имеет путь по умолчанию обработки исключений и показывает пользователю страницу ошибки по умолчанию. Это происходит от Аспект - ориентированной парадигмы. Я также писал о том , как сделать это здесь .

Связанные вопросы