gpt4 book ai didi

delphi - 如何在 COM 服务器中引发异常?

转载 作者:行者123 更新时间:2023-12-03 15:43:56 24 4
gpt4 key购买 nike

如何在 COM 服务器中引发异常以供 COM 客户端使用?我的服务器和客户端是用 Delphi 编写的,这有什么区别吗?基本上我有一个后台线程检查服务器中的各种内容。当它不高兴时,它应该停止服务器正在做的任何事情,并引发异常。这个异常需要客户端捕获。但不知道如何处理。

最佳答案

简单的答案是你不知道。异常不是 COM 互操作规范的一部分,因此不应跨越模块边界。您用状态代码指示错误。

在方法退出之前捕获异常(在每个 COM 接口(interface)方法中)。将结果转换为错误代码。如果您使用 HRESULT,那么您可以将其用作 safecall 并让 Delphi 编译器在栅栏的另一边重新引发异常。

<小时/>

总是知识渊博的 Rob Kennedy 在评论中指出 safecall 可以用于“栅栏的两侧”,这使得生活比上面概述的更加容易。

我根本不是这方面的专家(因此需要接受 Rob 的评论的教育)。然而,documentation表示当您实现 safecall 例程时,您应该覆盖 TObject.SafeCallException将异常转换为 HRESULT 错误代码。一些标准 COM 相关类提供了重写版本,但您可能需要添加一些您自己的逻辑。编译器在安全调用例程中编写隐式 Try/Except block ,通过调用此虚拟函数来处理异常。

关于delphi - 如何在 COM 服务器中引发异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5640330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com