Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

Как происходит обработка\вывод исключений из C++ CLI кода в C# коде?

#cpp_cli


Наверное, один из главных вопросов, которые остались - это как именно происходит
обработка\вывод исключений из C++ CLI кода в C# коде.

Ведь С++ CLI совмещает в себе управляемый и неуправляемый код, и в добавок вызывается
из управляемого C# кода.

Как на стороне C# правильно обрабатывать исключения C++ CLI кода:


Если в управляемой части CLI кода не проставлены try\catch блоки из ?
Если в управляемой части CLI кода проставлены try\catch блоки из ? Пробрасывать
дальше?
Если на стороне неуправляемого кода выбивает AcсessViolation, а в управляемой части
CLI этот метод находится в блоке try\catch - приложение всеравно рухнет?

    


Ответы

Ответ 1



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

Комментариев нет:

Отправить комментарий