Нужно ли нам ловить исключения для методов P / Invoke? - PullRequest
2 голосов
/ 14 апреля 2010

Я использую методы P / Invoke в своем приложении .NET. Поскольку функции являются функциями C ++; каждый из них имеет возвращаемый тип, например int, intptr или любую структуру. Тип возврата достаточно, чтобы сказать мне, была ли функция успешной или нет. Мне все еще нужно перехватить универсальное или COM-исключение в этом случае?

Ответы [ 3 ]

2 голосов
/ 14 апреля 2010

По моему мнению, вы всегда должны использовать try / catch при вызове внешнего компонента. Вы никогда не знаете, что можно вернуть. Приготовьтесь к неожиданному:)

2 голосов
/ 14 апреля 2010

PInvoke вызов все еще может завершиться ошибкой, если Dll не найден или не содержит требуемой функции.

1 голос
/ 14 апреля 2010

Функции C ++ могут генерировать исключения.

Windows API могут генерировать исключения, независимо от того, вызываются они напрямую из P / Invoke или из функций C ++.

Нормально ли, чтобы ваши пользователи видели сообщения об исключениях (сообщения об ошибках) из Windows, или вы хотите, чтобы ваша программа показывала им свое сообщение?

...