Objective-C或Objective C++可以处理C++异常吗?

Ahm*_*med 8 c++ exception objective-c objective-c++

我有一个用于网络通信的C++库,我需要为Mac移植,以前这个库是在Windows C++应用程序上使用的.

C++ Network Lib的流程基于错误情况下的异常,而不是返回错误代码或上一个错误.

现在,在Mac上,我们使用Objective-C/C++进行应用.我需要在Objective-C/C++中使用UI,但用于核心网络功能的lib是相同的C++库.

所以我的问题是目标C能够处理C++调用抛出的异常吗?如果是这样,怎么样?如果不是我如何解决它?或者我们是否编写了一个围绕C++ Lib调用的包装器并使用异常并返回错误代码?

请指教,如何解决..

Wad*_*kis 7

如果您在OS X上使用iOS或64位运行时,那么事情就非常有效.您可以编写C++样式的try/catch,它将按预期工作,@ try/@ catch也是如此.请注意,对于Objective-C和C++异常,您仍将拥有两种不同的样式; 唯一的统一是a 或捕获所有异常,Objective-C或C++ 的特殊情况.这对于集中清理代码非常有用,但是对于异常本身你可以做的就是@再次盲目地进行.catch(...)@catch(...)

但无论如何,不应将异常用于Objective-C(或Objective-C++)程序中的流控制.您确实应该努力捕获C++异常,因为它们退出有问题的库并将它们转换为更合适的机制,例如NSError.特别是,避免让任何这些框架通过任何Apple或第三方框架引发 - 大多数此类框架对于Objective-C异常并非异常安全,更不用说C++版本了,因此后果因此未定义(主要围绕内存泄漏,尽管很多其他失败是可能的).

  • 你能解释一下如何从C++端捕获抛出代码吗? (2认同)