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