gpt4 book ai didi

c++ - 如何防止 CRT 错误 C++ 导致进程崩溃

转载 作者:行者123 更新时间:2023-11-30 00:56:13 28 4
gpt4 key购买 nike

我有一个第 3 方 C 库,它会因 CRT 错误而崩溃。在这种情况下,整个过程崩溃。有什么办法可以捕获所有 CRT 错误并防止进程终止。

最佳答案

防止崩溃可能只是在延迟问题。

想象一下,您可以防止崩溃,但结果是,用户将不正确的数据保存回数据库,或损坏数据文件,那么您只会让问题变得更糟。

相反,尝试找出确切的问题是什么:

  • 您是否将不正确的参数传递给第 3 方库中的函数?
  • 还是第 3 方库中的错误?与图书馆制造商面对错误。

或者:

  • 尝试找到解决问题的方法
  • 为图书馆寻找替代品

编辑:老实说,去年我在第 3 方组件中遇到了同样的情况。我所做的是:

首先,使用 _try/_except 构造来捕获问题。仅当您知道在哪个函数中调用它会崩溃时,这才有效。它是这样工作的:

__try
{
Some3rdPartyLibraryFunction();
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
}

其次,为防止您的应用程序进一步损坏,请确保您的应用程序中不再调用第 3 方库。例如。假设该库是一个报告组件,那么如果遇到崩溃,则不允许用户再打开报告,如下所示:

bool MyClass::openReport (char *reportname)
{
if (!reportModuleEnabled)
return false;

__try
{
OpenTheReport(reportname);
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
// Tell the user about the problem and prevent further access to the library
ShowMessage ("Sorry, no more reports");
reportModuleEnabled = false;
return false;
}
return true;
}

关于c++ - 如何防止 CRT 错误 C++ 导致进程崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10719626/

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