在 Objective-C 中使用异常
Posted
技术标签:
【中文标题】在 Objective-C 中使用异常【英文标题】:Using exceptions in Objective-C 【发布时间】:2012-03-15 18:48:46 【问题描述】:我是 Objective-C 世界的新手。在研究一些 ios/Mac 应用程序时,我注意到 try -catch 很少使用,如果使用的话。 例如在 Java 中,它几乎一直在使用。 为什么它在 Objective-C 中不常见?
【问题讨论】:
What’s the rationale behind the Cocoa exception policy - or why use exceptions only for programmer errors? 的可能重复项 还有一个 great 由 zneak 和 bbum 提供的答案:***.com/questions/4648952/objective-c-exceptions 【参考方案1】:Objective-C 中的异常通常用于真正的异常情况并且几乎总是程序员错误。要传达可恢复的错误,请使用 NSError** 模式。
【讨论】:
【参考方案2】:有很多 SDK 方法采用 NSError**
参数并返回 BOOL
。为了指示错误,它们返回 false 并通过错误参数反馈错误以传达信息。
异常被使用,但通常用于运行时级别出现故障的情况 - 例如某些对象无法处理选择器。虽然看起来可能与我刚刚写的相反,但异常往往表示设计错误,而不是运行时错误。
NSError**
惯用语是您所需要的一切,例如失败的 URL 连接、数据转换等,其中存在错误条件,但程序确实不应该被彻底杀死。
开始阅读:Error Handling Programming Guide
【讨论】:
以上是关于在 Objective-C 中使用异常的主要内容,如果未能解决你的问题,请参考以下文章
Objective-c KVO:object vs changeDictionary