gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 17:51:49 30 4
gpt4 key购买 nike

我有一个用于网络通信的 C++ 库,我需要将其移植到 Mac,以前这个库用于 Windows C++ 应用程序。

C++ 网络库的流程基于错误情况下的异常,而不是返回错误代码或最后一个错误..

自从在 Mac 上我们使用 Objective-C/C++ 开发应用程序。我需要在 Objective-C/C++ 中使用 UI,但用于核心网络功能的库是相同的 C++ 库。

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

请指教,如何解决..

最佳答案

如果您使用的是 iOS 或 OS X 上的 64 位运行时,一切都非常正常。您可以编写一个 C++ 风格的 try/catch,它将按预期工作,@try/@catch 也是如此。请注意,对于 Objective-C 和 C++ 异常,您仍将拥有两种不同的样式;唯一的统一是 special case catch(...)@catch(...) 捕获 所有 异常,Objective-C 或 C++。这对于集中清理代码有点用处,但随后您对异常本身所能做的几乎就是再次盲目地@throw it。

但无论如何,exceptions shouldn't be used for flow control in Objective-C (或 Objective-C++)程序。当 C++ 异常退出有问题的库时,您确实应该努力捕获它们,并将它们转换为更合适的机制,例如 NSError。特别是,避免让它们中的任何一个通过任何 Apple 或第 3 方框架引发 - 大多数此类框架对于 Objective-C 异常都不是异常安全的,更不用说 C++ 异常了,因此后果是不确定的(主要围绕内存泄漏,尽管很多其他失败也是可能的)。

关于c++ - Objective-C 或 Objective C++ 可以处理 C++ 异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13910340/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com