c++ - 在 C++ 中捕获段错误或任何其他错误/异常/信号,就像在 Java 中捕获异常一样

标签 c++ exception exception-handling segmentation-fault signals

我基于一个有缺陷的开源库编写了一个 Linux 程序。这个库有时会触发我无法控制的段错误。当然,一旦库出现段错误,整个程序就会死掉。但是,我必须确保即使库有段错误,我的程序也能继续运行。这是因为我的程序有点像“服务器”,它至少需要告诉客户发生了不好的事情并从错误中恢复,而不是退缩……有什么办法可以做到这一点吗?

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

[更新]我知道 C++ 中也有异常处理,但 Segfault 不是异常,对吗?我不认为发生段错误时会抛出任何东西。你必须明确地“抛出”一些东西才能使用 try....catch.... 据我所知。

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

最佳答案

你不能reliably分段违规后恢复执行。如果您的程序必须保持运行,请在单独的进程中隔离有问题的库,并通过管道与它通信。当出现分段违规时,您的程序会注意到关闭的管道。

关于c++ - 在 C++ 中捕获段错误或任何其他错误/异常/信号,就像在 Java 中捕获异常一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6008470/

相关文章:

c++ - 删除openGL中动态分配的内存

java - JNI lib崩溃,更改了.c文件(未包含在Makefile中)

java - 如何正确处理重要的未检查异常

C++ 使用 reserve 和可能的 emplace_back 从文件中存储 vector<std::string>

c++ - OpenGL 中的射线球相交

exception - vertx IllegalArgumentException : No message codec for type - how to create a consumer for a custom type

exception - DATA_ERR : DOM IDBDatabase Exception 5 in Chrome, 如何修复?

java - PersistenceExceptionTranslationPostProcessor 实用程序

c++ - 跨越二进制边界的异常

android - 使用 Crashlytics 捕获异常而不崩溃?