Исключения из DLL / Shared libs - PullRequest
       13

Исключения из DLL / Shared libs

2 голосов
/ 27 декабря 2008

Предположим, вы разрабатываете библиотеку с классами, которые нужно экспортировать через DLL (в Windows или в подобной общей библиотеке, такой как Linux ELF shared libs). Функции-члены этих классов выдают исключения либо из стандартной библиотеки, либо из определенных библиотек исключений.

Совершенно безопасно кодировать в DLL, чтобы генерировать исключения для модулей, которые отображают адресное пространство DLL? Какие соображения следует учитывать при разработке программных компонентов в разделяемых библиотеках, откуда создаются исключения для клиентских модулей?

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 27 декабря 2008

Я согласен, что вполне разумно ожидать, что исключения, переброшенные через границы библиотеки, будут работать нормально. Тем не менее, не удивляйтесь, если вы столкнетесь с несколькими проблемами. Поиск в Google по запросу "исключения для общих объектов gcc" (также проверяйте группы) показывает, что за многие годы у многих людей возникло много проблем. В последний раз, когда я пробовал это с gcc (около 2003 года), я сдался, потому что он просто не работал для меня. Надеюсь, что с тех пор ситуация улучшилась.

1 голос
/ 27 декабря 2008

Вполне разумно, чтобы ваши библиотеки генерировали исключения или позволяли исключениям пузыриться из базовой структуры. Однако вы должны быть осторожны при документировании этого поведения для пользователей вашей библиотеки, чтобы пользователь вашего кода мог предпринять соответствующие действия для обработки любых исключений, которые могут быть вызваны (или не перехвачены) вашим кодом.

...