假设您正在开发一个包含要通过DLL导出的类的库(在Windows或类似的共享库,如Linux ELF共享库)。这些类的成员函数从标准库或库定义的异常中抛出异常。
在DLL中编码以向映射DLL地址空间的模块抛出异常是完全安全的吗?在共享库中开发软件组件时需要考虑哪些因素,从而将异常抛出到客户端模块?
非常感谢。
答案 0 :(得分:2)
我同意,期望跨库边界抛出的异常能够正常工作是完全合理的。但是,如果遇到一些小故障,请不要太惊讶。谷歌搜索"gcc shared object exceptions"(同时查看群组)显示,很多人多年来都遇到了很多问题。我最后一次尝试使用gcc(ca 2003),我放弃了,因为它对我来说不起作用。希望事情有所改善。
答案 1 :(得分:1)
您的库抛出异常或允许异常从底层框架冒出来是完全合理的。但是,您需要小心为库的用户记录此行为,以便代码的使用者可以采取适当的操作来处理代码可能抛出(或未被捕获)的任何异常。