Обработка действий DCL ON ERROR после первой ошибки?
Команда OpenVMS DCL HELP ON EXAMPLE
дисплеи:
НА
Примеры
1.$ ON SEVERE_ERROR THEN CONTINUE A command procedure that contains this statement continues to execute normally when a warning or error occurs during execution. When a severe error occurs, the ON statement signals the procedure to execute the next statement anyway. Once the statement has been executed as a result of the severe error condition, the default action (ON ERROR THEN EXIT) is reinstated.
Согласно справке, если ни [-]x.for
ни [-]y.for
существует, тогда две последние строки не будут выполнены:
$ on error then $ continue
$ rename [-]x.for []
$ rename [-]y.for []
$ type *.for
Есть ли способ установить ON ERROR
обработка как в первой строке без размещения ON ERROR
оператор между каждой строкой скрипта?
1 ответ
Если ON ERROR срабатывает, вы должны восстановить его. Похоже, вы не знаете, существует ли какой-либо из файлов. Таким образом, ON ERROR необходимо восстановить после первой неудачной команды.
Вы можете сделать это в подпрограмме, например:
$ on error then $ gosub on_error
$ rename [-]x.for []
$ rename [-]y.for []
$ on error then $ exit
$ type *.for
$ exit
$
$ on_error:
$ on error then $ gosub on_error
$ return
Кроме того, вы можете справиться с этим по-другому, отключив проверку ошибок (SET NOON):
$ set noon
$ rename [-]x.for []
$ rename [-]y.for []
$ set on
$ type *.for
или установление обработки ошибок только для серьезных ошибок (ON SEVERE_ERROR):
$ on severe_error then $ exit
$ rename [-]x.for []
$ rename [-]y.for []
$ on error then $ exit
$ type *.for