Вы можете определить и обработать ошибки в одной строке или множестве строк кода использованием команды 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