Как обрабатывать управляемые исключения в неуправляемом коде

У меня есть проект C ++, основанный на COM, в котором я получаю доступ к сборке C #. Я хочу написать код для обработки исключений в проекте com, которые генерируются сборкой C #.

Я попытался разместить блоки try и catch, но исключения не выдавались, вместо этого значение HRESULT меньше нуля. Мне нужна точная строка сообщения для отображения, которая генерируется C # API.

Пожалуйста, предоставьте инструкции для этого.

0

Решение

У вас есть два источника информации. Во-первых, возвращаемый HRESULT не является произвольным, каждое управляемое исключение имеет отличительный HRESULT это поможет вам определить тип объекта исключения, который был брошен.

Затем CLR реализует Интерфейс IErrorInfo. Вы можете использовать QI для указателя интерфейса, который вы использовали для вызова управляемого метода, чтобы получить указатель на интерфейс IErrorInfo. IErrorInfo :: GetDescription () возвращает значение свойства Exception.Message.

На этом все и заканчивается, никак не получится проследить святую стопку.

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector