外部链接C库中的异常传播

aaa*_*aaa 4 c c++ exception external libraries

我正在编写一个使用外部第三方C库的C++库.因此,我的图书馆将调用此第三方库中的函数,第三方库将回调到我的库的不同部分.

我想知道在这种情况下异常会发生什么?假设MyLib :: foo()调用外部C库函数,最终调用MyLib :: bar(),并且bar抛出异常,会发生什么?将异常正确传播到foo()中的处理程序吗?

谢谢!

sbi*_*sbi 6

将异常正确传播到处理程序中foo()吗?

我认为异常是否通过外部C代码传播是不确定的.更糟糕的是,C代码没有准备,无法处理异常.C代码不需要抵御突然的,意外的返回,因此它不知道RAII等.

当我遇到这种情况时,我在返回到C API之前捕获了异常,将其存储起来,并在从C API调用后重新抛出它.

  • 这比我的回答要好.我没有看到第三方库是C而不是C++.即使提问者多次提到这一点.也许就寝时间. (2认同)