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


Запросы при работе с классом EXCEPTIONS


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

exception: INTEGER -- Код последнего встретившегося исключения original_exception: INTEGER -- Код последнего исключения - первопричины текущего исключения

Разница между exception и original_exception важна в случае "организованной паники". Если программа получила исключение с кодом oc, указывающим на арифметическое переполнение, но не имеет предложения rescue, то вызывающая программа получит исключение, код которого, заданный значением exception, будет указывать на "отказ в вызванной программе". Но на этом этапе или выше по цепи вызовов может понадобиться выяснить оригинальное исключение - первопричину появления исключений - код oc, который и будет значением original_exception.

Коды исключений являются целыми. Значения для предопределенных исключений задаются целочисленными константами, обеспечиваемыми классом EXCEPTIONS (который наследует их от класса EXCEPTIONS_CONSTANTS). Вот несколько примеров:

Check_instruction: INTEGER is 7 -- Код исключения при нарушении утверждения check Class_invariant: INTEGER is ... -- Код исключения при нарушении инварианта класса Incorrect_inspect_value: INTEGER is ... -- Код исключения, когда проверяемое значение не является ни одной -- ожидаемых констант, если отсутствует часть Else Loop_invariant: INTEGER is ... -- Код исключения при нарушении инварианта цикла Loop_variant: INTEGER is ... -- Код исключения при нарушении убывания варианта цикла No_more_memory: INTEGER is ... -- Код исключения при отказе в распределении памяти Postcondition: INTEGER is ... -- Код исключения при нарушении постусловия Precondition: INTEGER is ... -- Код исключения при нарушении предусловия Routine_failure: INTEGER is ... -- Код исключения при отказе вызванной программы Void_assigned_to_expanded: INTEGER is ...

Так как значения констант не играют здесь роли, то показано только первое из них.




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