DLL / Shared libs的例外情况

时间:2008-12-27 18:07:27

标签: exception dll shared-libraries

假设您正在开发一个包含要通过DLL导出的类的库(在Windows或类似的共享库,如Linux ELF共享库)。这些类的成员函数从标准库或库定义的异常中抛出异常。

在DLL中编码以向映射DLL地址空间的模块抛出异常是完全安全的吗?在共享库中开发软件组件时需要考虑哪些因素,从而将异常抛出到客户端模块?

非常感谢。

2 个答案:

答案 0 :(得分:2)

我同意,期望跨库边界抛出的异常能够正常工作是完全合理的。但是,如果遇到一些小故障,请不要太惊讶。谷歌搜索"gcc shared object exceptions"(同时查看群组)显示,很多人多年来都遇到了很多问题。我最后一次尝试使用gcc(ca 2003),我放弃了,因为它对我来说不起作用。希望事情有所改善。

答案 1 :(得分:1)

您的库抛出异常或允许异常从底层框架冒出来是完全合理的。但是,您需要小心为库的用户记录此行为,以便代码的使用者可以采取适当的操作来处理代码可能抛出(或未被捕获)的任何异常。