在COM+(VB)中处理自定义.Net异常
本文关键字:处理 自定义 Net 异常 COM+ VB | 更新日期: 2023-09-27 17:48:49
我即将开始编写一个.Net组件,该组件将从VB COM+服务调用(新组件是一个DLL,它调用Web服务并根据响应返回)。我不知道如何处理调用VB.的.Net代码中可能出现的错误情况
我担心的两种错误是:
- 如果不满足先决条件,我可能想抛出的异常(例如,作为参数提供的开始日期比作为参数的结束日期晚不到3个月;我可能想引发StartDateNotValidException)
- 可能作为Web服务调用的一部分发生的异常(超时、404等)
如果出现上述情况,我想向用户返回一些特定的反馈和/或将一些信息记录到日志中。我曾考虑过从.Net代码返回Int返回代码并避免Exceptions,但调用VB的代码最终可能会迁移到.Net,所以如果可能的话,我想使用Exceptions。
我在MSDN上读到COM Interop将自动将标准库异常转换为HRESULT;有人用过这个吗?这可以用来将自定义.Net异常转换为我可以在VB中处理的错误条件吗?
谢谢,Nick
我肯定以前看过,但这是我以前的工作,所以我无法查看详细信息。我认为我们从COMException继承了异常类,并设置了正确的ErrorCode(在非托管代码中应翻译为HResult)。这非常好,因为您可以在非托管代码中使用HResult,也可以在托管客户端中正确处理类型化异常。
请告诉我它是否真的有效。
我最终使用了以下方法:
- 有一本大词典映射我们的特定应用程序VB错误代码到我们的特定于应用程序的C#自定义例外情况
- 编写一个方法,将C#异常转换为VB错误代码(以及反之亦然)
- 从包含任何业务的方法返回字符串数组中发生的异常方法调用(目前只有两个)
这样做的原因是,调整异常树以扩展COMException太麻烦了(无论如何,比上面的更麻烦)。因此,我从未尝试过从COMException继承并检查ErrorCode是否正确转换为HResult。
不过,谢谢你的建议,并为没有尝试而道歉。