2012年09月06日
If 文の特性について
今回は If 文の特性について書きます。
VBScript では If 文などで分岐するときに、
失敗ケースを先に書いておくことをおすすめします。
問題になりそうな書き方は以下のとおりです。
これを、以下のような書き方にします。
肝となるのは On Error Resume Next と
If 文に実行時エラーが発生する可能性があることです。
On Error Resume Next がある If 文では、評価式の中でエラーが発生すると、
Then 以降の処理を実行してしまいます。
これが、予期しない処理を生んでしまうわけです。
したがって、If 文の書き方は、Else 以降に正常処理を書いておくほうが良いのです。
チェックに引っかかった場合の処理ということで、先頭にまとめて書いておけば
ソースの統一感も出ると思います。
もし不思議な処理でお悩みの方は、上記の書き方に変えてみることをおすすめします。
{a8.net http://books.livedoor.com/item/1660109}
VBScript では If 文などで分岐するときに、
失敗ケースを先に書いておくことをおすすめします。
問題になりそうな書き方は以下のとおりです。
On Error Resume Next
Set scr = CreateObject("Scripting.FileSystemObject")
IIf Not scr.FileExists(arg) Then
If Not scr.FolderExists(arg) Then
Call MainProcess(arg)
Else
MsgBox "チェックBに失敗しました"
End If
Else
MsgBox "チェックAに失敗しました"
End If
これを、以下のような書き方にします。
On Error Resume Next
Set scr = CreateObject("Scripting.FileSystemObject")
If scr.FileExists(arg) Then
MsgBox "チェックAに失敗しました"
ElseIf scr.FolderExists(arg) Then
MsgBox "チェックBに失敗しました"
Else
Call MainProcess(arg)
End If
肝となるのは On Error Resume Next と
If 文に実行時エラーが発生する可能性があることです。
On Error Resume Next がある If 文では、評価式の中でエラーが発生すると、
Then 以降の処理を実行してしまいます。
これが、予期しない処理を生んでしまうわけです。
したがって、If 文の書き方は、Else 以降に正常処理を書いておくほうが良いのです。
チェックに引っかかった場合の処理ということで、先頭にまとめて書いておけば
ソースの統一感も出ると思います。
もし不思議な処理でお悩みの方は、上記の書き方に変えてみることをおすすめします。
{a8.net http://books.livedoor.com/item/1660109}
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image