Nav*_*een 4 c++ exception visual-c++-6 visual-studio-2008 visual-c++
我正在尝试这段代码来检查是否正在捕获除零异常:
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;
}
Run Code Online (Sandbox Code Playgroud)
当我使用VC6编译它时,执行了catch处理程序并且输出为"Caught exception".但是,当我使用VS2008编译它时,程序崩溃而不执行catch块.可能是造成差异的原因是什么?
在项目 - >属性 - >配置属性 - > c/c ++ - >代码生成 - >启用c ++异常下启用结构化异常处理.
尝试除外.理想情况下,使用过滤器检查异常代码,然后返回常量信号,如果它想要捕获.我已经跳过了这里,但我建议你在这里看一下过滤器的例子.
#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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
471 次 |
| 最近记录: |