我已经用C++编写了一个ActiveX控件,当控件中发生错误条件时会抛出(C++)异常。调用表示控件实例的对象的Javascript代码被try-catch块包围:
try
{
var controlInstance = window.controlInstance;
... perform operations on controlInstance ...
}
catch (e)
{
alert("something bad happened");
}
现在,当我在带有Visual Studio(2008)调试器的IE8(或7或6)下运行此代码时,无论控件是使用DEBUG编译还是不使用DEBUG编译,一切都按预期工作。然而,当在没有连接调试器的情况下运行浏览器时,当异常跨越控件和JScript之间的边界时,IE会崩溃(真的)。
有人对如何解决这个问题有什么建议吗?我意识到我可以更改控件的接口以将异常作为参数传递回来,但我真的不想做出这样的改变。
任何帮助都将不胜感激。