当前位置:  开发笔记 > 编程语言 > 正文

在代码中捕获异常

如何解决《在代码中捕获异常》经验,为你挑选了1个好方法。

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

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块.可能是造成差异的原因是什么?



1> Tim Matthews..:

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

尝试除外.理想情况下,使用过滤器检查异常代码,然后返回常量信号,如果它想要捕获.我已经跳过了这里,但我建议你在这里看一下过滤器的例子.

#include 
#include 

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;
}

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有