XCode iOS项目中未捕获C ++异常

时间:2012-09-21 09:24:49

标签: c++ objective-c xcode exception

我创建了一个C ++库。我在iOS应用程序中使用它。我想过在C ++库中处理异常,为了测试这个,我创建了一个测试方案并从中调用了c ++函数。在c ++函数中,我故意编写了错误的代码。

try 
{
    int i = 0;
    int j = 10/i;
} 
catch(std::exception &e){
    printf("Exception : %s\n",e.what());
}

但异常从未被捕获,应用程序在 - int j = 10 / i;

处中断

请告诉我,如何在这种情况下为我的c ++代码添加异常处理?

感谢。

1 个答案:

答案 0 :(得分:2)

当遇到除法时,C ++不会抛出异常(另请参阅this this其他问题)!引用Stroustrup:

  

低级事件,例如算术溢出和除以零,是   假设由专门的低级机制处理,而不是   例外。这使C ++能够匹配其他行为   算术时的语言。它也避免了这些问题   发生在严重流水线架构上的事件,如   除以零是异步的。

“C ++的设计与演变”(Addison Wesley,1994)

所以你必须自己处理这个案子 - 你必须在分裂前检查每个可能的除数并处理它。