gpt4 book ai didi

c++ - 当我的 C++ 代码某处发生运行时错误时如何打印某些内容?

转载 作者:搜寻专家 更新时间:2023-10-31 00:31:17 24 4
gpt4 key购买 nike

通常发生的是当代码遇到运行时错误时,它只是以运行时标志终止,我打算做的是在终止前打印一条自定义消息,我希望“返回 0”,即在打印自定义消息后正常终止代码如果运行时从未发生过。

知道怎么做吗?

最佳答案

程序可能终止的原因有很多。

首先:抛出了一个未捕获的异常。如果那是您正在寻找的东西,那么请遵循保罗·埃文斯 (Paul Evans) 给出的建议。使用 C++11,您可能想要调用 get_terminate(),并在新终止处理程序的末尾调用返回的终止处理程序:

terminate_handler old_terminate_handler = nullptr;

void new_terminate_handler() {
std::cerr << "terminate due to error" << std::endl;
if( old_terminate_handler != nullptr ) {
old_terminate_handler();
} else {
std::abort();
}
}

int main(int, char**) {
old_terminate_handler = get_terminate();
set_terminate(new_terminate_handler);
}

第二:收到信号,通常会终止程序。安装一个信号处理程序来捕获它:

void sig_handler(int signal) {
new_terminate_handler();
}

// ...
std::signal(SIGTERM, sig_handler);
std::signal(SIGSEGV, sig_handler);
std::signal(SIGINT, sig_handler);
// ...

第三:操作系统可能只是决定终止进程。这是通过正常信号信号(例如 SIGTERM)或无法处理的信号(例如 SIGKILL)完成的。在第二种情况下,您没有机会在程序内部注意到这一点。第一种情况已经涵盖。

关于c++ - 当我的 C++ 代码某处发生运行时错误时如何打印某些内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34333193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com