【问题标题】:.net assembly interop exceptions handling.net 程序集互操作异常处理
【发布时间】:2010-10-26 16:30:47
【问题描述】:

我正在使用 COM 互操作从 Delphi 项目中调用 .Net 程序集。

我可以在 Delphi 中捕获程序集引发的 .Net 异常吗?

【问题讨论】:

    标签: .net delphi com


    【解决方案1】:

    COM 不适用于 .NET 异常,但适用于 HRESULT 值。因此,您无法在 Delphi 端捕获 .NET 异常。您只会收到带有错误值的 HRESULT。如果你很幸运,你会得到一个带有特定错误值的 HRESULT,这样你就知道出了什么问题,如果你运气不好,你会得到一些通用的 HRESULT 值。

    【讨论】:

    • hm,如果我调用procedure,它不会返回任何东西,但是它会抛出异常,所以我什么都做不了?
    • 每个 COM 方法都返回一个 HRESULT 值。我不知道 .NET 端的 COM 互操作是如何处理的,但我猜即使过程出错,它也会返回带有错误值的 HRESULT。
    • @eba:也许您指的是 Delphi 的 Safecall。 safecall 调用约定封装了 COM 错误处理,当从 Delphi 代码调用 safecall 函数时,Delphi 会自动检查返回的 HRESULT 并在必要时引发异常。
    • 7 年后……这仍然是真的吗?这个库:sourceforge.net/p/dotnetruntimelibraryfordelphi/wiki/Home 声称它可以“处理 .Net 异常并访问所有 .Net 异常属性,包括异常类型名称、StackTrace 等”
    猜你喜欢
    • 2015-05-03
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    相关资源
    最近更新 更多