VBScript - try-catch のようにエラー処理をする

VBScript で C# や Java のような try-catch での例外処理を書く方法を説明する。

まず VBScript におけるエラー処理で覚えておくべきポイント3つを以下に挙げる。

  • エラーを処理するには `On Error Resume Next` ステートメントでエラー処理を有効化する。

  • `On Error Resume Next` ステートメントによる設定は、そのプロシージャ内でのみ適用される。

  • エラー処理を有効にしていないプロシージャで実行時エラーが起きた場合、エラー処理が有効なプロシージャまで処理が戻る。
    エラー処理が有効なプロシージャがなかった場合はスクリプトが終了する。

このポイントをふまえて、try-catch のようなエラー処理にしたのが次のスクリプト。

'try...catch...finally のサンプル
Sub TryCatchExample
    'エラー処理を有効化
    On Error Resume Next

    Dim errorHasOccurred
    errorHasOccurred = False

    'Try にあたる処理を呼び出す
    Call Try
    
    'Try で実行時エラーが発生した場合の処理を分岐内に書く
    If Err.Number <> 0 Then
        errorHasOccurred = True

        'TODO: catch にあたる処理を書く
    End If

    'TODO: finally にあたる処理を書く

    '実行時エラーが発生していた場合はここで処理終了
    If errorHasOccurred Then
        Exit Sub
    End If
End Sub

Sub Try
    'TODO: try にあたる処理を書く
End Sub

TryCatchExample プロシージャは `On Error Resume Next` ステートメントでエラー処理を有効化している。

TryCatchExample プロシージャから呼び出される Try プロシージャは、エラー処理は無効なまま。
よって Try プロシージャで実行時エラーが発生した場合、Try プロシージャを抜け TryCatchExample プロシージャの Call Try の次の行に処理が渡る。

そこで `Err.Number` プロパティを見て、実行時エラーが発生していた場合はエラー処理をする。

いいなと思ったら応援しよう!