Ich habe einige JScript, die einige Sachen mit einer ODBC-Verbindung macht. Eine Ausnahme wurde vom ODBC-ActiveXObject-Objekt ausgelöst und nicht in meinem Skript abgefangen. Ich erwartete, dass das Skript mit einem Wert ungleich 0 beendet werden würde, aber das tat es nicht. Wer weiß, warum dies der Fall ist und wie man es mit einem Wert ungleich 0 bei einer nicht abgefangenen Ausnahme beenden kann?Warum wird mein JScript (Windows-Skript-Host) mit 0 bei einer nicht abgefangenen Ausnahme beendet?
Q
Warum wird mein JScript (Windows-Skript-Host) mit 0 bei einer nicht abgefangenen Ausnahme beendet?
3
A
Antwort
2
Die JScript-Engine kann als virtuelle Maschine betrachtet werden. Wenn die JScript-Engine selbst oder der Skript-Host eine Art von katastrophalem Fehler aufweisen würde, könnte man erwarten, einen Exit-Code ungleich Null zu erhalten (zum Beispiel könnte der Skript-Host keine der DLLs finden, die er benötigt).
Wenn jedoch das Skriptprogramm auf dieser 'VM' ausgeführt wird, wird eine Ausnahme ausgelöst, sogar eine unbehandelte, die keinen Fehler in der Engine oder dem Host darstellt.
Was Sie tun können, ist das ganze Skript in einen try-Block und dann werfen Sie einfach die Ausnahme in den Fang. Die Scripting-Engine wird diese geworfen Ausnahme genau behandeln, wie Sie das Original behandelt wollten: -
try
{
// the rest of your script
}
catch(e)
{
throw(e); // returns nonzero exit code
}
Verwandte Themen
- 1. Wie wird der Stack-Trace bei einer abgefangenen Ausnahme angezeigt?
- 2. Was passiert auf Betriebssystemebene, wenn ein .net-Programm aufgrund einer nicht abgefangenen Ausnahme beendet wird?
- 3. Warum mein Vorgesetzter beendet?
- 4. Warum wird mein Perl-Skript mit 137 beendet?
- 5. Warum Destruktor bei Ausnahme nicht aufgerufen wird?
- 6. Warum Jquery-Ereignisschleife bei Ausnahme unterbrochen wird
- 7. Warum wird mein ProgressDialog beendet, wenn ich auf Aktivität klicke?
- 8. Warum wird mein WPF-Validierungsfehler nicht angezeigt?
- 9. Warum wird mein Xamarin.Android-Projekt nicht mit Proguard erstellt: "java.exe" mit Code 1 beendet
- 10. Oracle-Ausnahme wird nicht von Java SQL-Ausnahme angezeigt, wenn Prozedur nicht beendet
- 11. Umgang mit nicht abgefangenen Ausnahmen in der C# -Konsolenanwendung
- 12. Warum wird -0 == 0 als wahr ausgewertet?
- 13. Thread-Ausnahme bei SelectedNode = .Nodes [0]
- 14. Warum kann mein Editiertext nicht mit "0" Android Studio starten?
- 15. Warum wird mein Token nicht gelöscht?
- 16. Warum werden Zeichenfolgen in C++ normalerweise mit '\ 0' beendet?
- 17. Warum wird mein Diagramm nicht korrekt angezeigt?
- 18. Warum wird mein Array nicht in einer Webseite angezeigt?
- 19. Warum wird mein Memo-Array auf 0 Java initialisiert?
- 20. Warum wird mein C++ - Programm nicht kompiliert?
- 21. Warum wird mein JFrame nicht versteckt?
- 22. Warum wird mein Symbol nicht neu gezeichnet?
- 23. Warum wird mein Array-Testcode nicht gedruckt?
- 24. Warum wird mein VisualStateTrigger nicht aktualisiert?
- 25. Beenden App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException' Fehler
- 26. Warum wird mein UILabel nicht geändert?
- 27. Warum wird mein ValueConverter nicht ausgelöst?
- 28. Warum wird mein SSIS-Konfigurationsupdate nicht gespeichert?
- 29. Warum wird mein Audio nicht zurückgespult?
- 30. Warum wird mein Datagrid nicht aktualisiert?
Beachten Sie, dass VBScript aus dem gleichen Problem leidet, ist aber viel schwieriger, eine Lösung zu erzielen - einer der Gründe, neige ich dazu, JScript zu bevorzugen zu VBScript. Weitere Informationen finden Sie unter http://stackoverflow.com/questions/2929715/capture-any-error-in-vbscript. – bacar