использование перебрасывания проверенных / непроверенных исключений? - PullRequest
1 голос
/ 12 июля 2010

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

Ответы [ 2 ]

7 голосов
/ 12 июля 2010

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

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

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

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

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

try {
    writeToDatabase();
} catch(Exception ex) {
    rollbackChanges();
    throw ex;
}
1 голос
/ 12 июля 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...