QT用C++全局防止程序异常结束具体代码实现一下
为了全局防止程序异常结束,我们可以使用C++的异常处理机制。具体来说,我们可以设置一个全局的异常处理函数,当程序发生异常时,该函数会自动被调用,我们可以在该函数中进行一些处理,如打印错误信息、记录日志等,然后再退出程序,避免程序异常结束。
以下是一个简单的代码示例:
#include <iostream>
#include <exception>
// 全局异常处理函数
void myExceptionHandler()
{
std::cerr << "程序发生异常,即将退出!" << std::endl;
// 记录日志等其他处理
std::exit(1); // 退出程序
}
int main()
{
// 设置全局异常处理函数
std::set_terminate(myExceptionHandler);
// 程序逻辑
std::cout << "程序开始运行..." << std::endl;
int i = 0;
int j = 1 / i; // 故意制造除零异常
std::cout << "程序结束运行..." << std::endl;
return 0;
}
在上面的代码中,我们使用了C++标准库的std::set_terminate函数来设置全局异常处理函数,该函数会在程序发生未被捕获的异常时被调用。在myExceptionHandler函数中,我们打印了错误信息,并调用了std::exit函数来退出程序。
在程序运行时,我们制造了一个除零异常,程序会在执行到除零操作时发生异常,此时全局异常处理函数myExceptionHandler会被自动调用,打印错误信息并退出程序。
需要注意的是,全局异常处理函数只能处理未被捕获的异常,如果程序中的异常被try-catch块捕获了,那么全局异常处理函数不会被调用。因此,在编写程序时,我们还需要加上适当的try-catch语句来捕获可能发生的异常
原文地址: https://www.cveoy.top/t/topic/coK6 著作权归作者所有。请勿转载和采集!