我基于一个有缺陷的开源库编写了一个 Linux 程序。这个库有时会触发我无法控制的段错误。当然,一旦库出现段错误,整个程序就会死掉。但是,我必须确保即使库有段错误,我的程序也能继续运行。这是因为我的程序有点像“服务器”,它至少需要告诉客户发生了不好的事情并从错误中恢复,而不是退缩……有什么办法可以做到这一点吗?
我理解在 Java 中只需要捕获异常。但是 C++ 是如何处理这个的呢?
[更新]我知道 C++ 中也有异常处理,但 Segfault 不是异常,对吗?我不认为发生段错误时会抛出任何东西。你必须明确地“抛出”一些东西才能使用 try....catch.... 据我所知。
非常感谢,我对 C++ 还很陌生。
最佳答案
你不能reliably分段违规后恢复执行。如果您的程序必须保持运行,请在单独的进程中隔离有问题的库,并通过管道与它通信。当出现分段违规时,您的程序会注意到关闭的管道。
关于c++ - 在 C++ 中捕获段错误或任何其他错误/异常/信号,就像在 Java 中捕获异常一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6008470/