アフィリエイト広告を利用しています
最新記事
日別アーカイブ

広告

posted by fanblog

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}
posted by FJT at 06:49| VBScript
プロフィール
FJTさんの画像
FJT
使えそうな技術情報を掲載しています。 ぜひ、役立ててください。
プロフィール
リンク集
×

この広告は30日以上新しい記事の更新がないブログに表示されております。