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