Вы можете определить и обработать ошибки в одной строке или множестве строк кода использованием команды ON ERROR и указанием в ней любой допустимой команды или выражения. Однако, обычно для указания процедуры обработки ошибок или программы используется команда DO . Обычно ON ERROR используется как, верхний в иерархии, обработчик ошибок, которые локальные обработчики, такие как события Error и TRY...CATCH...FINALLY не обрабатывают.
Например, предположим, что в вашем программном файле (.prg) имеется недопустимая строка, вроде представленной ниже:
Скопировать
код | |
|---|---|
qxy | |
Когда вы запустите программу, Visual FoxPro отобразит подходящее случаю сообщение об ошибке, "Unrecognized command verb." Однако, вы можете создать процедуру ON ERROR для определения таких недопустимых команд и запустить ее для обработки подобной ошибки. В приведенном ниже фрагменте кода недопустимой команде предществует команда ON ERROR, включащая в себя функцию ERROR(), которая отобразит результат с помощью команды вывода на экран - ?:
Скопировать
код | |
|---|---|
ON ERROR ?ERROR() qxy | |
Когда будут исполняться эти строки кода, команда ON ERROR определит ошибку и отразит номер ошибки, возвращенный функцией ERROR() в активном окне, вместо вывода диалога, сообщающего об ошибке.
Приведенный ниже код, по существую являющийся базовой формой обработчика, иллюстрируется использование процедуры ON ERROR:
Скопировать
код | |
|---|---|
LOCAL lcOldOnError
lcOldOnError = ON("ERROR") && Сохраняет обработчик ошибок, используемый по умолчанию.
* Вызываем ON ERROR с процедуров обработки ошибки.
ON ERROR DO ErrHandler WITH ERROR(), MESSAGE()
* Вставьте здесь код, к которому применяется процедура обработки ошибки.
* Восстанавливаем оригинальный обработчик ошибок.
ON ERROR &lcOldOnError
PROCEDURE ErrHandler
LOCAL aErrInfo[1]
AERROR(aErrInfo)
DO CASE
CASE aErrInfo[1] = ErrorNum && Укажите подходящий номер ошибки.
* отобразите соответствующее сообщение и вставьте код, фиксирующий ошибку.
OTHERWISE
* Отобразите какое-то общее для вашего приложение сообщение об ошибке.
ENDPROC | |
Для получения более подробной информации смотрите описание команды ON ERROR. Вы можете, кроме того, включить в процедурном кода другие обработчики ошибок,такие как TRY...CATCH...FINALLY.
Смотрите также
Справочное руководство
Справка по языку отладки и обработки ошибокКонцепции
Структурированная обработки ошибокОбработка ошибок класса и объекта
Обработка оишбок в Run-Time