Perché il mio JScript (Windows Script Host) uscita con 0 su un'eccezione non rilevata?
-
05-09-2019 - |
Domanda
Ho qualche JScript, che fa alcune cose con una connessione ODBC. È stata generata un'eccezione dall'oggetto ODBC ActiveXObject e non catturato nel mio script. Mi aspettavo che il copione sarebbe uscita con un valore non 0, ma non lo fece. Chiunque sa perché questo è il caso e come ottenerlo per uscire con un valore non 0 su un'eccezione non rilevata?
Soluzione
Il motore JScript può essere pensato come una macchina virtuale. Se il motore JScript stesso o l'host di script dovesse avere una qualche forma di guasto catastrofico si potrebbe aspettare per ottenere un codice di uscita diverso da zero (ad esempio un host lo script non riusciva a trovare una delle DLL di cui ha bisogno).
Tuttavia, se il programma script viene eseguito su questo 'VM' genera un'eccezione persino un uno non gestita che non costituisce un guasto nel motore o l'host.
Che cosa si può fare è inserire l'intero script in un blocco try e poi basta lanciare l'eccezione delle catture. Il motore di scripting sarà gestire questa eccezione generata esattamente come si voleva l'originale trattati: -
try
{
// the rest of your script
}
catch(e)
{
throw(e); // returns nonzero exit code
}