2009-04-07 6 views
3

私はいくつかのものをODBC接続で行うJScriptをいくつか持っています。 ODBC ActiveXObjectオブジェクトによって例外がスローされ、スクリプトに捕捉されませんでした。私は、スクリプトが0以外の値で終了することを期待しましたが、そうではありませんでした。誰が、なぜこれが当てはまるのか、キャッチされない例外で0以外の値で終了する方法を知っていますか?私のJScript(Windowsスクリプトホスト)はキャッチされない例外で0で終了するのはなぜですか?

答えて

2

JScriptエンジンは、仮想マシンと考えることができます。 JScriptエンジン自体やスクリプトホストに何らかの致命的な障害が発生した場合は、ゼロ以外の終了コードが必要になることがあります(たとえば、スクリプトホストが必要なDLLを見つけられないなど)。

しかし、この 'VM'で実行されているスクリプトプログラムが、エンジンまたはホストで障害を構成しない未処理のものであっても例外をスローした場合。

あなたができることは、スクリプト全体をtryブロックに置き、例外をcatchに投げることです。私は、JScriptのを好む傾向にある理由の一つ - VBScriptのは、同じ問題に苦しんでいるが、修正を達成するためにはるかに困難であること

try 
{ 

    // the rest of your script 

} 
catch(e) 
{ 
    throw(e); // returns nonzero exit code 
} 
+0

注 - :スクリプトエンジンを使用すると、オリジナルの扱いを望んでいたとおりに、このスローされた例外を処理しますVBScriptに変換します。詳細については、http://stackoverflow.com/questions/2929715/capture-any-error-in-vbscriptを参照してください。 – bacar

関連する問題