Я предполагаю, что вы имеете в виду, что вы отбрасываете производный тип и все данные, которые он содержит. Вы ничего не можете с этим поделать как универсальное решение. Конечно, если вы используете библиотеку Foo, и она часто выдает FooError, вы можете catch (const FooError& e)
и обработать это специально.
Вы также можете использовать RTTI, чтобы обнаружить тип времени выполнения исключения и добавить его в исключение .Net. Имя, которое появляется, несколько уродливо.