web-dev-qa-db-ja.com

vbscriptでエラーをスローできますか?

私はC#でのプログラミングに慣れています。C#には、かなり堅牢なエラー処理がいくつかあります。現在、VBScriptで短いプロジェクトに取り組んでいます。 "On Error _______"とErrグローバル変数を使用したVBscriptでのエラー処理について読みました。

ただし、独自のエラーを生成する方法はありますか?たとえば、関数の1つに間違ったタイプのパラメーターが渡された場合、その時点でスクリプトが完全に失敗し、続行を試みます。

31
Eric Anastas

はい、できます。使用 - Err.Raise メソッド、例:

Err.Raise 5 ' Invalid procedure call or argument

VBScriptの標準エラーコードのリストについては、「 エラー(VBScript) 」を参照してください。

31
Helen

@ helenanswer は正しいのですが、少しスパースです。

Err.Raise()メソッドについて詳しく説明しますが、いくつかの重要なポイントを逃しています。

元の質問 から
しかし、自分のエラーを生成する方法はありますか?たとえば、関数の1つに間違ったタイプのパラメーターが渡された場合、スクリプトがその時点で失敗するのではなく、続行しようとします

Err.Raise()は非常に用途が広く、既存の例外をスローできます(すでに説明したように)が、まったく新しいユーザー定義の例外をスローすることもできます。

Call Err.Raise(vbObjectError + 10, "My Application", "My custom error message")

vbObjectError-2147221504は、ユーザー定義のエラーを発生させるための境界を定義する組み込みのVBScript定数です。

22
Lankymart

C#try-catch-finally

try {
    // some code
} catch( Exception e ) {
    // error handler
} finally {
    // clean up things
}

同等のVBScript

on error resume next
' some code
if( Err.number <> 0 ) then
    ' error handler -- you can use Err.raise() here to display your own errors
    Err.clear()
else
    ' clean up things
end if
on error goto 0

良いVBScriptの例については、 ASP Xtreme Evolutionプロジェクト を確認できます。

2