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


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