为啥我的 JScript(Windows 脚本宿主)在未捕获的异常中以 0 退出?

Posted

技术标签:

【中文标题】为啥我的 JScript(Windows 脚本宿主)在未捕获的异常中以 0 退出?【英文标题】:why does my JScript (windows script host) exit with 0 on an uncaught exception?为什么我的 JScript(Windows 脚本宿主)在未捕获的异常中以 0 退出? 【发布时间】:2009-04-07 01:17:51 【问题描述】:

我有一些 JScript,它通过 ODBC 连接做一些事情。 ODBC ActiveXObject 对象引发了一个异常,并且没有在我的脚本中捕获。我预计脚本会以非 0 值退出,但事实并非如此。任何人都知道为什么会这样,以及如何让它在未捕获的异常上以非 0 值退出?

【问题讨论】:

【参考方案1】:

JScript 引擎可以被认为是一个虚拟机。如果 JScript 引擎本身或脚本宿主出现某种形式的灾难性故障,您可能会得到一个非零退出代码(例如,脚本宿主找不到它需要的 DLL 之一)。

但是,如果在此“VM”上运行的脚本程序引发异常,即使是未处理的异常,也不构成引擎或主机故障。

您可以做的是将整个脚本放在一个 try 块中,然后在 catch 中抛出异常。脚本引擎将完全按照您希望处理的原始异常处理这个抛出的异常:-

try


  // the rest of your script


catch(e)

  throw(e);  // returns nonzero exit code

【讨论】:

请注意,VBScript 也有同样的问题,但要解决这个问题要困难得多——这也是我更喜欢 JScript 而不是 VBScript 的原因之一。详情请见***.com/questions/2929715/…。

以上是关于为啥我的 JScript(Windows 脚本宿主)在未捕获的异常中以 0 退出?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 jscript 在 iOS 7 的 Chrome 浏览器中不起作用?

JS文件是做啥用的?

2016/2/21 JavaScript简介

VBS脚本编程——WSH脚本宿主

JavaScript基本语法

为啥不推荐使用 JScript 在 WiX 中实现自定义操作?