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

我如何能够捕获此异常?

有帮助吗?

解决方案

简答:你不能

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

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

在这种情况下,抛出异常将终止应用程序。您的具体情况包括:

异常转义非本地静态(即全局)

的构造函数/析构函数
scroll top