gpt4 book ai didi

c++ - dlopen 在具有在构造函数中抛出异常的静态成员的库上 - 导致中止

转载 作者:太空狗 更新时间:2023-10-29 20:49:26 41 4
gpt4 key购买 nike

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

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

最佳答案

简答:你不能

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

参见此处:Why destructor is not called on exception?

这些是抛出异常将终止应用程序的情况。您的具体情况涵盖在:

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

关于c++ - dlopen 在具有在构造函数中抛出异常的静态成员的库上 - 导致中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/413473/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com