Классификация исключений
Объявляемые
(проверяемые/ checked )
n Носят предсказуемый характер
n Указываются в объявлении метода
n Наследуют от класса Exception
Необъявляемые
(непроверяемые /unchecked )
n Обусловлены логикой кода
n Не указываются в объявлении метода
n Наследуют от классов RuntimeException, Error
Классификация исключений
Синхронные
n Непосредственный итог выполнения определенной инструкции
Могут быть объявляемыми и необъявляемыми
Асинхронные
n Не зависят от выполняемой инструкции
n Внутренние ошибки JVM
n Результат работы deprecated методов
Вопрос 34 Объявляемые исключения: синтаксис, особенности, порядок работы. 10-14 Лекция Исключительные ситуации и их обработка
Объявление исключений
n Сведения об исключениях метода не менее важны, чем тип возвращаемого им значения
n Они являются частью контракта операции и контракта класса
n Мораль: их надо обозначать в заголовке
class OurClass {
public int someMethod() throws Exception1, Exception2 {
/* Код, который может породить
Exception 1 или Exception 2 */
}
}
Особенности объявления исключений
n В списке должны присутствовать те объявляемые исключения, которые не обрабатываются в теле самого метода
n Метод вправе выбросить исключение типа, наследного от заявленного в throws
n Запрещено генерировать объявляемые исключения типов, не заявленных в throws
Особенности объявления исключений
n Объявляются все объявляемые исключения, не обработанные в теле метода
n Статические блоки инициализации и инициализирующие выражения не могут выбрасывать исключения
n Нестатические блоки инициализации могут генерировать объявляемые исключения, только если их тип указан во всех throws всех конструкторов класса
Вызов метода со списком исключений
Варианты действий
n Отловить исключения и обработать их
n Отловить исключения и вместо них сгенерировать исключения типов, указанных в собственном предложении throws
n Объявить соответствующие исключения в предложении throws текущего метода и позволить им «пройти через код» вашего метода
Важные замечания
n Каждое исключение имеет как формальную причину возникновения, так и фактическую
n Исключение должно отлавливаться и обрабатываться на том уровне (по стеку, порядку вызова методов), где его:
l можно обработать;
l имеет смысл обрабатывать.
n Выбрасывание исключения – это реакция на нарушение внешнего контракта
n Обработка исключений не сводится к выводу сообщений в консоль и записи в журнал (logger)!
Вопрос 35 Блок try/catch/finally, его предназначение и особенности. 15-21 Лекция Исключительные ситуации и их обработка
Отлов исключений
n Особый синтаксис описания обработчиков исключений
n Конструкция try/catch/finally
try {
Инструкции
} catch ( ТипИсключения1 идентификатор1) {
Инструкции
} catch ( ТипИсключения 2 идентификатор 2 ) {
Инструкции
...
} finally {
Инструкции
}
Блок try
n Заключает в себе блок кода, выполняемый успешно при нормальных обстоятельствах
n Тело выполняется вплоть до:
n Момента возникновения исключительной ситуации
n Благополучного достижения конца блока
n Конкретный блок в процессе выполнения может выбросить только одно исключение
Блок catch
n «Внутренний метод» с параметром
типа исключения, которое им
обрабатывается
n Способен:
l Выполнить некоторые восстановительные действия
l Выбросить собственное исключение
l Осуществить необходимые действия и передать управление последующим инструкциям
n Количество блоков catch не регламентировано
Блок catch
n Предложения catch рассматриваются последовательно до обнаружения среди них того, тип которого допускает присвоение выброшенного исключения
n Использовать широкий тип (например, Exception) в качестве отлавливаемого – не лучшая мысль!
n Список предложений catch просматривается только один раз!
Дата: 2019-07-30, просмотров: 252.