我正在尝试使用dlopen函数加载动态库.该库包含一个静态对象,它在其构造函数中抛出异常.我在dlopen调用周围有一个"try-catch(...)"块,但它没有捕获异常,我只看到"Abort"打印.
我怎么能抓住这个例外?
简答:你做不到
再考虑一下.
原始语句成立,但您还必须记住dlopen()是C库函数.C不支持例外.因此,抛出从C++代码到C(您的全局对象返回到dlopen())代码的异常也会导致应用程序终止.
请参见此处:为什么析构函数不会在异常时调用?
这些是抛出异常将终止应用程序的情况.您的具体情况包括:
异常转义非本地静态(即全局)的构造函数/析构函数