Основы объектно-ориентированного программирования


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


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

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

ОбъектКлассПрограммаПрирода исключенияЭффект
O4Z_Functionsplit (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 Нарушение

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

Отказ

Отказ

Эта таблица содержит историю не только тех исключений, которые привели, в конечном счете, к отказу системы, но и исключений, эффект которых был преодолен в результате выполнения rescue - retry. Число исключений в таблице может быть ограничено, например, числом 100 по умолчанию. Порядок в таблице сверху вниз является обратным порядку, в котором вызываются программы. Корневая процедура создания записана в последней строке таблицы.

Столбец Программа идентифицирует для каждого исключения программу, чей вызов был прерван исключением. Столбец Объект идентифицирует цель этого вызова; используемые здесь имена O1 и так далее, но в реальной трассировке они будут внутренними идентификаторами, позволяющие определить, являются ли объекты совпадающими. Столбец Класс указывает класс, генерирующий объект.




- Начало -  - Назад -  - Вперед -