rescue

-- Здесь ничего (пустой список инструкций)

end

Из принципа Отказа вытекают следующие следствия: если исключение встретилось в программе, не имеющей предложения rescue, то эта программа вырабатывает отказ, включая исключение у вызывающей программы.

Рассмотрение отсутствующего предложения rescue, как присутствующего пустого предложения, является подходящей аппроксимацией на данном этапе рассмотрения. Но нам придется слегка подправить это правило, когда начнем рассматривать эффект исключений на инвариант класса.

Таблица истории исключений

Если в программе произошел отказ, то ли из-за отсутствия предложения rescue, то ли потому, что это предложение закончилось без retry, она прервет выполнение вызывающей программы, вызвав в ней исключение типа (4) - отказ в вызываемой программе. Вызывающая программа столкнется с теми же самыми двумя возможностями: либо в ней есть предложение rescue, способное исправить ситуацию, либо она выработает отказ и передаст управление вверх по цепочке вызовов. Если на всем пути не найдется программы, способной справиться с исключением, то выполнение всей системы закончится отказом. В этом случае окружение должно сформировать и вывести ясную картину произошедшего - таблицу истории исключения. Вот пример такой таблицы:

Объект Класс Программа Природа исключения Эффект
O4 Z_Function split (from E_FUNCTION) Feature interpolate: Вызывалаcь ссылкой void Повторение

O3

O2

O2

INTERVAL

EQUATION

EQUATION

integrate

solve (from GENERAL_EQUATION)

filter

interval_big_enough: Нарушено предусловие

Отказ программы

Отказ программы

Отказ

Отказ

Повторение

O2

O1(root)

MATH

INTERFACE

new_matrix (from BASIC_MATH)

make

enough_memory: Check Нарушение

Отказ программы

Отказ

Отказ

Таблица 12.1.Пример таблицы истории исключений

Эта таблица содержит историю не только тех исключений, которые привели, в конечном счете, к

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату