Vvedenie_v_ABAP
.pdfДобавьте текст исключения во вкладке «Текст».
Сохраните изменения.
На следующем шаге создайте исключение для неверного символа оператора. Назовите его «ZCX_*##_UNDEF_OPERATOR» и установите наследование от созданного ранее исключения. Пометьте класс, как конечный:
.
После сохранения, перейдите во вкладку «Атрибуты». Так как нам интересен символ оператора, вызвавший исключение, добавьте атрибут с названием «Operator» типа C (Char).
Теперь в тексте исключения вы можете сослаться на созданный атрибут. Перейдите во вкладку «Текст». Введите:
Оператор &operator& неизвестен.
91
Во время выполнения программы ссылка будет заменена на символ, вызвавший исключение.
Повторите те же шаги и для второго исключения. Назовите его «ZCX_*##_VALUETOHIGH». Это исключение должно иметь дополнительный атрибут maxvalue типа I (Integer), для хранения максимального значения, которое было превышено. Текст исключения должен быть таков:
Результат превышает максимальное значение &maxvalue&
92
Сохраните и активируйте изменения.
Задание 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».
Сверяйтесь с рисунком ниже.
93
Задание 3: Изменение отчета работы калькулятора
Краткое описание: Отчет работы калькулятора из главы 3 изменяется для отображения созданных ранее исключений.
Откройте исходный код «ZY*##CALCULATION».
Для начала нужно добавить определение переменной, хранящей указатель на полученное исключение. Так как отчет должен показывать текст исключения, вы также должны определить строковую переменную
На втором шаге, главная часть отчета о работе должна быть расширена секцией try.
Затем добавьте две секции catch: Первая ловит « ZCX_*##_CALC_EXCEPTION». Также она ловит унаследованные исключения. Воспользуйтесь методом get_text( ), чтобы получить текст исключения и вывести его.
Вторая секция catch используется для исключения «CX_SY_ZERODEVIDE». В этом случае необходимо просто вывести текст «Деление на ноль!»
Код должен получить следующий вид:
Проверьте исходный код на синтаксические ошибки, сохраните и активируйте изменения. Запустите тестирование.
Проверьте работу трех видов исключений. Ниже рисунок, показывающий работу программы при неопределенном символе оператора.
94
95