2009-04-07 16 views
3

J'ai quelques JScript qui fait des choses avec une connexion ODBC. Une exception a été levée par l'objet ODBC ActiveXObject et non interceptée dans mon script. Je m'attendais à ce que le script se termine avec une valeur non 0, mais ce n'est pas le cas. Quelqu'un sait pourquoi c'est le cas et comment l'obtenir pour sortir avec une valeur non 0 sur une exception non interceptée?Pourquoi mon script JScript (Windows Script Host) sort-il avec 0 sur une exception non interceptée?

Répondre

2

Le moteur JScript peut être considéré comme une machine virtuelle. Si le moteur JScript lui-même ou l'hôte de script devait avoir une forme d'échec catastrophique, vous pouvez vous attendre à obtenir un code de sortie différent de zéro (par exemple, l'hôte de script n'a pas pu trouver l'une des DLL nécessaires).

Cependant, si le programme de script exécuté sur cette machine virtuelle lance une exception même non gérée qui ne constitue pas une défaillance dans le moteur ou l'hôte.

Ce que vous pouvez faire est de placer le script entier dans un bloc try, puis de lancer l'exception dans le catch. Le moteur de script traitera cette exactement exception lancée que vous vouliez l'original traité: -

try 
{ 

    // the rest of your script 

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

Notez que VBScript souffre du même problème, mais il est beaucoup plus difficile d'obtenir une solution - une des raisons pour lesquelles je tendance à préférer JScript à VBScript. Voir http://stackoverflow.com/questions/2929715/capture-any-error-in-vbscript pour plus de détails. – bacar