混合客户端和 .NET 库错误处理。

Mixed client and .NET library error handling.

提问人:John Gardner 提问时间:2/6/2015 更新时间:2/6/2015 访问量:51

问:

我们有一个公开 COM 的 .NET 库。 客户端可以是 C# 或旧版 VB6 代码(因此支持 COM)。在运行时,我们不知道客户端是 VB6 还是 .NET。

问题是如何进行错误处理。.NET 客户端可以处理异常,但 VB6 使用不同的错误处理。我们如何才能透明地为这两种突发事件提供适当的错误处理。我们需要 VB6“On Error”类型的处理才能工作,我们需要 .NET try catch 才能工作。请注意,我们并不总是能够控制客户端代码。

我们是否将所有引发的异常转换为 COM 异常?感谢您在这里的任何帮助。

.NET 异常 VB6 互操作 错误报告

评论

0赞 Hans Passant 2/6/2015
COM 不支持异常,仅支持错误代码。客户端中对 COM 的运行时支持通常会将这些错误代码转换为异常,.NET 和 VB6 当然会这样做。很难看到你的问题,你试过了吗?

答:

0赞 JStevens 2/6/2015 #1

我的建议是在您的 .NET 库中,只需抛出任何错误并让使用代码处理它:

Try
   code ...
Catch
   Throw
End Try

如果 COM 抓住了抛出,它应该解释它,.NET 也是如此......