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` プロパティを見て、実行時エラーが発生していた場合はエラー処理をする。