Исключения в COM - PullRequest
       6

Исключения в COM

3 голосов
/ 24 апреля 2011

Я пишу интерфейс с кодом COM и знаю, что единственным пользователем этого интерфейса является мой собственный код (косвенно).Если я выброшу исключение, могу ли я поймать его на другой стороне библиотеки, которая находится посередине?Это условие прекращения, поэтому самая изящная очистка в мире не самая большая сделка в истории.

1 Ответ

8 голосов
/ 24 апреля 2011

Исключениям не разрешено проходить через границу интерфейса COM.Поскольку для исключений C ++ нет бинарного контракта, COM не может переместить их из одного потока в другой.Это может не быть большой проблемой сейчас, но это может быть проблемой позже, если вы решите изменить модель потоков вашего COM-объекта.

Кроме того, что произойдет, если вы решите переписать интерфейсвашего приложения в C # (или Delphi или что-то еще)?COM HRESULTS понимаются различными средами взаимодействия COM, но исключения C ++ - нет (нет бинарного контракта для исключений C ++).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...