gpt4 book ai didi

c++ - 在代码中捕获异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:09 30 4
gpt4 key购买 nike

我正在尝试这段代码来检查是否捕获了被零除异常:

int main(int argc, char* argv[])
{
try
{
//Divide by zero
int k = 0;
int j = 8/k;
}
catch (...)
{
std::cout<<"Caught exception\n";
}
return 0;
}

当我使用 VC6 编译它时,执行了 catch 处理程序并且输出是“Caught exception”。然而,当我使用 VS2008 编译这个程序时,程序没有执行 catch block 就崩溃了。造成差异的原因可能是什么?

最佳答案

在项目->属性->配置属性->c/c++->代码生成->启用c++异常下启用结构化异常处理。

使用 try except。理想情况下,使用一个过滤器来检查异常代码,然后在它想要捕获时返回常量信号。我在这里跳过了它,但我建议您查看 here有关过滤器的示例。

#include <iostream>
#include <windows.h>

int main(int argc, char* argv[])
{
__try
{
//Divide by zero
int k = 0;
int j = 8/k;
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
if(GetExceptionCode()==EXCEPTION_INT_DIVIDE_BY_ZERO)
std::cout << "Caught int divison exception\n";
else
std::cout << "Caught exception\n";

system("pause");
}
return 0;
}

关于c++ - 在代码中捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/623373/

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