【发布时间】:2014-07-09 20:14:50
【问题描述】:
我有基于 COM 的 C++ 项目,在其中访问 C# 程序集。我想编写代码来处理 com 项目中由 C# 程序集抛出的异常。
我尝试放置 try 和 catch 块,但没有抛出异常,而是 HRESULT 值小于零。我需要显示 C# API 抛出的确切消息字符串。
请为此提供指南。
【问题讨论】:
-
如果您只想知道错误消息,您可以将最后一个异常消息保存在变量中,然后使用 GetLastErrorMsg() 方法将其公开。当 HRESULT 值小于零时调用该方法。
-
我认为您无法从非托管世界访问托管信息(异常字符串)。看看这个:blogs.msdn.com/b/liviuc/archive/2009/10/13/…。它说:“......您将无法在本机处理程序中获取托管异常信息 - 您必须在 C++/CLI 中使用 try/catch - 也就是说,在托管上下文中 - 如果您真的需要该信息。”。不过你可以抓住它。
-
我没有找到 GetLastErrorMsg()... 我可以看到返回 DWORD 的 GetLastError()。
标签: c++ c#-4.0 com unmanaged managed