我正在编写一个使用外部第三方 C 库的 C++ 库。因此,我的库将调用该第三方库中的函数,而第三方库将回调到我库的不同部分。
我想知道在这种情况下异常会发生什么?
假设 MyLib::foo() 调用外部 C 库函数,最终调用 MyLib::bar(),并且 bar 抛出异常,会发生什么?异常会正确传播到 foo() 中的处理程序吗?
Thanks!
异常是否会正确传播到处理程序foo()
?
我认为异常是否通过外部 C 代码传播是未定义的。更糟糕的是,C 代码没有准备好,无法处理异常。 C 代码不需要抵御突然的、意外的返回,因此它不知道 RAII 等。
当我曾经遇到过这样的情况时,我在返回 C API 之前捕获了异常,将其存储起来,并在从 C API 调用返回后重新抛出它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)