第一次出错后处理DCL ON ERROR动作?

时间:2014-12-11 23:34:50

标签: error-handling openvms dcl

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 个答案:

答案 0 :(得分:4)

如果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