Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Перехват исключений






Перехват исключений производится специальными обработчиками, которые содержатся в блоках catch. Блоков catch может быть расположено несколько.

Формат блока catch. Каждый блок catch начинается со слова “catch”, затем тип ошибки, а затем необязательное имя. Если имя параметра не указано, то информацию, переданную из точки исключения вытащить будет невозможно.

В большинстве случаев, нужен только тип исключения. Имя необязательно

Обработчик исключения срабатывает только тогда, когда тип указанный в catch и тип сгенерированного объекта исключения соответствуют друг другу

Соответствие типу:

1. Тип параметра в заголовке catch и тип реального сгенерированного объекта исключения полностью одинаковы

2. Когда тип параметра, указанного в catch, является открытым базовым классом для типа сгенерированного объекта

3. Когда параметр типа обработчик – это указатель на базовый класс относительно сгенерированного объекта также указатель на наследованный класс.

4. Когда обработчик задан в формате catch(…){} отлавливает все исключения

При написании нескольких обработчиков, важен порядок их расположения. При исключительной ситуации производится последовательный поиск нужного обработчика, если какой-то из блоков catch отловит исключение, то все последующие блоки catch не выполняются. При удачной обработке управление переходит на первый оператор после всех блоков catch.

Рекомендуют блоки catch размещать в таком порядке, что бы первыми шли наиболее специализированные типы а затем более универсальные. Блок catch (…) должен быть самым последним

Достоинства обрабтчика catch(…) в том, что он гарантировано отловит любое исключение и программа не прервется.

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

Последовательно обработчиков catch напоминает блоки case внутри switch, однако имеются следующие отличия:

· Каждый блок catch имеет собственную область действия, в отличии от switch, где она общая

· Внутри catch нет необходимости использовать break

· В каждом catch определяют свой собственный тип, который ожидается в обработчике.

· Внутри обработчика не доступа к переменным, объявленным ранее или в блоке try.

 

Повторная генерация исключения

 

Оператор повторной генерации исключения “throw; ”

Повторная генерация происходит внутри catch. объект исключения будет тот же самый catch(Except e), который пришел в этот обработчик






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.