当前位置:  开发笔记 > 编程语言 > 正文

使用在构造函数中抛出异常的静态成员对库进行dlopen - 导致Abort

如何解决《使用在构造函数中抛出异常的静态成员对库进行dlopen-导致Abort》经验,为你挑选了1个好方法。

我正在尝试使用dlopen函数加载动态库.该库包含一个静态对象,它在其构造函数中抛出异常.我在dlopen调用周围有一个"try-catch(...)"块,但它没有捕获异常,我只看到"Abort"打印.

我怎么能抓住这个例外?



1> Martin York..:

简答:你做不到

再考虑一下.
原始语句成立,但您还必须记住dlopen()是C库函数.C不支持例外.因此,抛出从C++代码到C(您的全局对象返回到dlopen())代码的异常也会导致应用程序终止.

请参见此处:为什么析构函数不会在异常时调用?

这些是抛出异常将终止应用程序的情况.您的具体情况包括:

异常转义非本地静态(即全局)的构造函数/析构函数

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有