如何在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)
编辑:虽然原因似乎有所不同,但对于任何人来说,这个数字在将来可能会有所帮助。
答案 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)不是一个例外它是一个信号 - 因此你必须使用信号处理程序来处理这个问题。