【发布时间】:2012-09-27 03:26:29
【问题描述】:
我一直在网上找到这个答案的点点滴滴,但没有一个清晰的解决方案。
这就是我想要做的。 1) 创建一个 ATL 简单对象。 2) 向该对象添加一个返回 BOOL 而不是 HRESULT 的方法。调用者想要真/假返回值。 3) 向将提供 e.description 和 e.number 数据的 jscript 或 vbscript 调用者抛出异常。
RE 2) 我发现我可以使用 STDMETHODIMP_(BOOL) 和 [local] 来允许返回 BOOL RE 3) 我发现我可以通过 SetErrorInfo() 传递 IErrorInfo 来填充错误对象
我的困境是我不知道如何构建 C++ 以跨 ABI 边界抛出一个不会导致调用者崩溃的异常。
【问题讨论】:
-
我不相信你可以跨 ABI 边界抛出 C++ 异常。这怎么可能?
-
感谢马克的输入。那么有没有办法在 C++ 的脚本中触发 catch 块?如果不是,您建议我应该怎么做才能实现最佳实施?我相信我看到有人说您可以通过 Invoke/InvokeEx 执行此操作,但我不确定如何实现代码。