メイン画像

VBScript - エラー処理(try-catch-finallyっぽく)

VBScript - エラー処理(try-catch-finallyっぽく)


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 errorHandled
    errorHandled = False

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

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

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

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

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

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

そこから呼び出される Try プロシージャは、エラー処理に関しては何も設定していないため無効なままです。
よって Try プロシージャで実行時エラーが発生した場合、TryCatchExample プロシージャの Call Try した次の行に処理が戻ります。

Call Try の後、Err.Number プロパティを見て、実行時エラーが発生していた場合は If 文の中のエラー処理を行います。
もし finally のような処理を書きたければ、この分岐内でスクリプトを終了させないようにしてください。


アカウントを作成 して、もっと沢山の記事を読みませんか?


この記事が気に入ったら ことりと さんを応援しませんか?
メッセージを添えてチップを送ることができます。


この記事にコメントをしてみませんか?


酒とアクアリウムが最近の楽しみ。

おすすめの記事