如何在XCode 3.2.3上启用异常处理?

时间:2011-01-21 17:49:19

标签: c++ xcode gdb

如何在XCode中启用异常 - 3.2.3。有没有像我应该为编译器启用异常处理的标志?尝试使用Google搜索,但没有找到有关C++的XCode的足够信息!

#include <iostream>
#include <exception>

int main()
{
    try
    {
        int i=5,j=0;
        int res = i/j;
    }
    catch (const std::exception& exe) 
    {
        std::cerr<< exe.what();
    }
    catch (...)
    {
        std::cout<< "\n Default Exception Handler \n";
    }

    return 0;
}

输出:

  

将程序加载到调试器中...
  程序已加载。
  运行
  [切换到处理1332]
  正在运行...
  程序收到信号:“EXC_ARITHMETIC”。
  sharedlibrary apply-load-rules all   杀
  当前语言:auto;目前c ++
  退出
  调试器已退出,状态为0.(gdb)

编辑:虽然原因似乎有所不同,但对于任何人来说,这个数字在将来可能会有所帮助。

4 个答案:

答案 0 :(得分:1)

我很确定默认情况下处理异常处理,但我认为除以零实际上不会产生异常。如果您想确保它们已打开,只需转到您的项目或目标设置,然后搜索“例外”;有一个名为“启用C ++异常”的复选框。

答案 1 :(得分:1)

诸如上面的除以零之类的算术异常之类的CPU异常不是C ++异常。只使用过Microsoft Visual C ++的人经常会对此感到困惑,因为Microsoft添加了一个非标准的扩展,允许将CPU异常视为C ++异常,但这不是常态,当然不可移植。

答案 2 :(得分:1)

除以零不会引发C ++异常。请参阅this question

答案 3 :(得分:0)

您尝试处理异常的方式是正确的...将在异常流程中起作用。

不是:EXC_ARITHMETIC(devision by 0)不是一个例外它是一个信号 - 因此你必须使用信号处理程序来处理这个问题。