COM中的异常
Exceptions in COM
我正在用COM代码编写一个接口,并且我知道这个接口的唯一用户是我自己的代码(间接地)。如果我抛出一个异常,我能在库的另一边,也就是在中间的地方,捕捉到它吗?这是一个终止条件,因此世界上最优雅的清理不是有史以来最大的交易。
异常不允许流过COM接口边界。因为c++异常没有二进制契约,COM不能将它们从一个线程封送到另一个线程。这现在可能不是一个大问题,但如果你决定改变你的COM对象的线程模型,这可能是一个问题。
此外,如果你决定要用c#(或Delphi或其他)重写应用程序的前端,会发生什么?COM HRESULTS可以被各种COM互操作框架理解,但c++异常不能(c++异常没有二进制合约)。
相关文章:
- 处理多个异常集合的C++方法
- 我在c++代码中生成了一个运行时#3异常
- 孤立代码块在结构中引发异常
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- C++中的赋值发生,尽管右侧出现异常
- 从构造函数抛出异常时如何克服内存泄漏
- 异常属于C++中的线程还是进程
- 当类定义不可见时捕获异常
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 为什么异常不退出程序?
- 为什么我应该在异常处理中使用std::cerr而不是std::cout
- 如何修复链表类实现的未处理异常0xDDDDDDDD
- ATL/COM:为什么 CComSafeArray::GetCount() 会为空数组抛出异常
- 在 C# 中加载 COM 对象会引发异常"无法将类型'System.__ComObject'的 COM 对象强制转换为接口类型...",但C++或 VB 不会
- chaiscript.com 的基本示例在运行时引发异常
- 在用C++编写的COM客户端中引发异常的Null返回值
- 跨越COM方法边界的C++异常会发生什么
- COM接口修改突然开始导致异常
- 异常安全的COM内存处理
- COM中的异常