7.1.14 On Error
- 機能
-
エラー発生時に,指定したラベルに制御を移すステートメントです。エラー発生時に,指定したラベルに制御を移さないようにすることもできます。
- 形式
On Error GoTo LabelName
- 指定項目
-
- LabelName
-
分岐先のラベル名を指定します。ラベル名には変数の名前付け規則に準じた名前を指定します。
エラー発生時に指定したラベルに制御を移さないようにするには,LabelNameに0を指定します。
- 説明
-
On Errorステートメントは,ラベルの次の行から始まるエラー発生時の処理を有効にします。実行時にエラーが発生すると,ここで設定した分岐先に制御が移り,処理が実行されます。ただし,構文エラーが発生した場合には設定した分岐先には制御が移りません。分岐先のラベルはOn Errorステートメントと同じプロシージャ内に存在しなければなりません。
On Error GoTo 0を指定しなければ,ラベルの次の行から始まるエラー発生時の処理はプロシージャの終了まで有効になります。
分岐先のラベルを次のように指定した場合,実行エラーになります。
-
On Errorステートメントをプロシージャの外部で指定し,分岐先のラベルをプロシージャの内部に指定する。
-
On Errorステートメントをフロー制御ステートメントの外部で指定し,分岐先のラベルをフロー制御ステートメントの内部に指定する。
-
- 補足
-
On Errorステートメントで指定したラベルに分岐する場合は,基本的に,実行エラーになりうるステートメントやコマンドが実行エラーとなったときです。
ただし,例外として以下の場合は実行エラーとなっても分岐しません。
-
TextReadコマンドで「ファイルの終わりに達した」のエラー時
-
WaitForExecコマンドで「タイムアウト時間を経過した」のエラー時
また,IsDefineコマンドやIsExistFileコマンドのように実行エラーになりえないコマンドはコマンドの戻り値にかかわらず分岐しません。
-
- 例
On Error GoTo ErrHandler '以降エラー発生時にラベルの次の行に制御が移る Copy ( InDir+"CTL3D32.DLL" ,OutDir+"CTL3D32.DLL" ,VersionUp ) : On Error GoTo 0 '以降エラー発生時にラベルの次の行に制御を移さない : ErrHandler: 'エラー発生時の分岐先 :
- 対象バージョン
-
JP1/Script 05-00以降