ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 03.04.2021

Просмотров: 732

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

91 

 
Добавьте текст исключения во вкладке 

«Текст»

.  

 

 

 
Сохраните изменения. 
 
На следующем шаге создайте исключение для неверного символа оператора. 
Назовите его «

ZCX_*##_UNDEF_OPERATOR

»

 

и установите наследование от 

созданного ранее исключения. Пометьте класс, как конечный: 
 

 

 

После сохранения, перейдите во вкладку 

«Атрибуты»

. Так как нам интересен символ 

оператора, вызвавший исключение, добавьте атрибут с названием «

Operator

»

 

типа

 C 

(Char)

 

 
Теперь в тексте исключения вы можете сослаться на созданный атрибут. Перейдите 
во вкладку

 

«Текст»

. Введите: 

 

Оператор &operator& неизвестен. 

 

Описание 

исключения 

Исключение – 

неопределенный 

оператор 


background image

 

92 

Во время выполнения программы ссылка будет заменена на символ, вызвавший 
исключение. 
 

 

 
Повторите 

те 

же 

шаги 

и 

для 

второго 

исключения. 

Назовите 

его 

«

ZCX_*##_VALUETOHIGH

». 

 

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

maxvalue

 

типа

  I  (Integer)

,  для  хранения  максимального  значения,  которое  было 

превышено. Текст исключения должен быть таков: 

 

Результат превышает максимальное значение &maxvalue& 

 

 

 

 

 

 

 

Исключение – 

превышен 

максимум 


background image

 

93 

Сохраните и активируйте изменения. 
 
 
 

Задание 3: Модификация калькулятора 

Краткое  описание:

 

В  функцию  калькуляции  из  главы  3  добавляется  обработка 

созданных ранее исключений. 
 
Откройте  функциональный  модуль  «

Z*##FMCALCULATION

»

.  Сначала  исключения 

необходимо объявить. 
 
Перейдите 

во 

вкладку 

«Особые 

ситуации»

Добавьте 

исключения  

«

CX_SY_ZERODIVIDE

»

 

и «

ZCX_*##_CALC_EXCEPTION

»

. Так как другие исключения 

унаследованы  от 

CALC_EXCEPTION

,  нет  необходимости  упоминать  их  отдельно. 

Убедитесь, что установлена галочка 

«Классы исключ.»

 

 

 

Перейдите к исходному коду. Добавьте секцию 

WHEN OTHERS

 

в инструкцию 

CASE

чтобы отлавливать все неподходящие символы. Установите исключение 

«ZCX_*##_UNDEF_OPERATOR

», определив 

im_operator, 

как параметр вызова. 

 
После  инструкции 

CASE

 

добавьте  условие 

IF

,  проверяющее,  не  превысил  ли 

результат 1000. И установите исключение 

«ZCX_01_ValueToHigh»

.  

Сверяйтесь с рисунком ниже. 
 

 

 

Объявление 

используемых 

исключений 

Исходный код 

функционального 

модуля 


background image

 

94 

Задание 3: Изменение отчета работы калькулятора 

Краткое  описание:

 

Отчет  работы  калькулятора  из  главы  3  изменяется  для 

отображения созданных ранее исключений. 
 
Откройте исходный код 

«ZY*##CALCULATION»

Для  начала  нужно  добавить  определение  переменной,  хранящей  указатель  на 
полученное исключение. Так как отчет должен показывать текст исключения, вы также 
должны определить строковую переменную 
 
На втором шаге, главная часть отчета о работе должна быть расширена секцией 

try

 
Затем  добавьте  две  секции 

catch

:  Первая  ловит  « 

ZCX_*##_CALC_EXCEPTION

». 

Также  она  ловит  унаследованные  исключения.

 

Воспользуйтесь  методом

  get_text(  )

чтобы получить текст исключения и вывести его.  
Вторая  секция  catch  используется  для  исключения  «CX_SY_ZERODEVIDE».  В  этом 
случае необходимо просто вывести текст 

«Деление на ноль!» 

 
Код должен получить следующий вид: 
 

 

 

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

Исходный код 


background image

 

95