2

我创建了一个 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++ 代码添加异常处理?

谢谢。

4

1 回答 1

2

当遇到被零除时,C++ 不会抛出异常(另请参阅thisthis other questions)!引用 Stroustrup 的话:

低级事件,例如算术溢出和除以零,被假定由专用的低级机制而不是异常处理。这使得 C++ 在算术方面能够匹配其他语言的行为。它还避免了在诸如除以零之类的事件是异步的大量流水线架构上发生的问题。

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

所以你必须自己处理这个案例——你必须在除法之前检查每个潜在的除数并处理它。

于 2012-09-21T09:28:13.457 回答