5

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

我怎样才能捕捉到这个异常?

4

1 回答 1

6

简短的回答:你不能

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

见这里:为什么在异常时不调用析构函数?

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

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

于 2009-01-05T15:48:56.640 回答