Поиск обработчика исключения
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Классификация исключений

 

Объявляемые

(проверяемые/ 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, просмотров: 217.