2012年08月09日
エラートラップ
今回は VBScript でエラートラップができるようにします。
対象は Classic ASP や Windows Script です。
VBScript のエラー処理の基本は、エラー無視宣言をして、
処理後に発生したエラーをレポートする方法です。
On Error Resume Next
''ここにエラーになりそうな処理を書きます。
Set fso = CreateObject("Scripting.FileSystemObject")
'エラー番号などを退避します
num = Err.Number
msg = Err.Description
'エラー宣言を元に戻します。
On Error Goto 0
エラー宣言を元に戻すのは、変数未定義などの、プログラム上のエラーを検出するためです。
また、On Error を実行するとエラー状態がリセットされてしまうので、
エラーが発生しそうな文の直後に取得します。
この一連の記述を処理単位に書くのは大変です。
たとえば、オブジェクト作成、ファイルを開く、ファイルを読込む、の3つの処理を書く場合、
On Error Resume Next 〜 On Error Goto 0 までの処理がたくさん出てきます。
On Error Resume Next
'オブジェクト作成
Set fso = CreateObject("Scripting.FileSystemObject")
num = Err.Number
msg = Err.Description
On Error Goto 0
If num = 0 Then
On Error Resume Next
'ファイルを開く
Set stm = fso.OpenTextFile("aaa.txt", ForReading)
num = Err.Number
msg = Err.Description
On Error Goto 0
If num = 0 Then
On Error Resume Next
'ファイル内容の読込
buf = stm.ReadAll()
num = Err.Number
msg = Err.Description
If num = 0 Then
'成功
Else
'失敗
End If
Else
'失敗
End If
Else
'失敗
End If
これをひとつの文で済ませましょう。
VBScript ならではのテクニックです。
On Error Resume Next
'ファイルを開いて読込む
buf = CreateObject("Scripting.FileSystemObject").OpenTextFile("aaa.txt", ForReading).ReadAll()
num = Err.Number
msg = Err.Description
On Error Goto 0
VBScript は実行の都度コンパイルされる言語なので、
ソースは短いほど処理が最適化されます。
こういったテクニックで、多少なりとも実行速度が速くなればと思います。
{a8.net http://books.livedoor.com/item/1660109}
対象は Classic ASP や Windows Script です。
VBScript のエラー処理の基本は、エラー無視宣言をして、
処理後に発生したエラーをレポートする方法です。
On Error Resume Next
''ここにエラーになりそうな処理を書きます。
Set fso = CreateObject("Scripting.FileSystemObject")
'エラー番号などを退避します
num = Err.Number
msg = Err.Description
'エラー宣言を元に戻します。
On Error Goto 0
エラー宣言を元に戻すのは、変数未定義などの、プログラム上のエラーを検出するためです。
また、On Error を実行するとエラー状態がリセットされてしまうので、
エラーが発生しそうな文の直後に取得します。
この一連の記述を処理単位に書くのは大変です。
たとえば、オブジェクト作成、ファイルを開く、ファイルを読込む、の3つの処理を書く場合、
On Error Resume Next 〜 On Error Goto 0 までの処理がたくさん出てきます。
On Error Resume Next
'オブジェクト作成
Set fso = CreateObject("Scripting.FileSystemObject")
num = Err.Number
msg = Err.Description
On Error Goto 0
If num = 0 Then
On Error Resume Next
'ファイルを開く
Set stm = fso.OpenTextFile("aaa.txt", ForReading)
num = Err.Number
msg = Err.Description
On Error Goto 0
If num = 0 Then
On Error Resume Next
'ファイル内容の読込
buf = stm.ReadAll()
num = Err.Number
msg = Err.Description
If num = 0 Then
'成功
Else
'失敗
End If
Else
'失敗
End If
Else
'失敗
End If
これをひとつの文で済ませましょう。
VBScript ならではのテクニックです。
On Error Resume Next
'ファイルを開いて読込む
buf = CreateObject("Scripting.FileSystemObject").OpenTextFile("aaa.txt", ForReading).ReadAll()
num = Err.Number
msg = Err.Description
On Error Goto 0
VBScript は実行の都度コンパイルされる言語なので、
ソースは短いほど処理が最適化されます。
こういったテクニックで、多少なりとも実行速度が速くなればと思います。
{a8.net http://books.livedoor.com/item/1660109}
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image