在C++中捕获Segfault或任何其他错误/异常/信号,例如在Java中捕获异常

Ven*_*tta 9 c++ signals exception-handling exception segmentation-fault

我写了一个基于有缺陷的开源库的Linux程序.该库有时会触发我无法控制的段错误.当然,一旦图书馆有段错误,整个程序就会死掉.但是,即使库有段错误,我也必须确保我的程序继续运行.这是因为我的程序类似于"服务器",它至少需要告诉客户一些不好的事情,并从错误中恢复,而不是鸡蛋......有没有办法做到这一点?

我理解在Java中只需要捕获异常.但是C++如何处理这个呢?

[更新]我知道在C++中也存在异常处理,但Segfault也不例外,是吗?当segfault发生时我不认为会抛出任何东西.据我所知,你必须明确地"抛出"使用try .... catch ....

非常感谢,我对C++很陌生.

Sam*_*ler 14

分段违规后,您无法可靠地恢复执行.如果您的程序必须保持运行,请在单独的进程中对违规库进行隔离,并通过管道与其进行通信.当它违反分段时,您的程序会注意到已关闭的管道.