iphone os 框架本身会抛出 NSException 吗?

Posted

技术标签:

【中文标题】iphone os 框架本身会抛出 NSException 吗?【英文标题】:does iphone os framework throw NSException itself? 【发布时间】:2010-10-11 06:10:16 【问题描述】:

我知道我可以在自己的代码中抛出 NSException,iphone os 框架会抛出 NSException 本身吗? 如果是这样,意味着我应该从框架中捕获 NSExceptions 吗? 我知道Java会在SDK内部抛出异常,例如未经检查的异常。

【问题讨论】:

【参考方案1】:

ios 和 Cocoa 中的框架抛出的异常表示不可恢复的错误。不使用异常(非常极端的异常除外)来传达类似验证问题的内容。

一般来说,iOS 和 Cocoa 使用NSError 来传达可恢复的问题(例如,用户输入验证错误、Core Data 中的状态验证错误或连接问题)。

您不应在自己的代码中使用异常来指示无法恢复的问题。它与底层框架的模式背道而驰,这样做会使您的代码随着时间的推移更难以发展。

【讨论】:

Apple 的错误处理编程指南对 Cocoa 中的错误处理进行了很好的概述,其中包括一个名为“错误和异常注意事项”(developer.apple.com/library/ios/documentation/Cocoa/Conceptual/…) 的部分,它基本上重申了上述 @bbum 所说的内容。 (如果您想从“更官方”的来源获得它。)【参考方案2】:

您想在代码中抛出 NSExceptions,并且想知道框架是否也抛出它们。好吧,如果发生错误,它会抛出它们。您可以通过将每个抛出异常的代码放在 try...catch... finally 块中来捕获它们,这与“您的”异常抛出代码的块不同:) 也许其他人可以提供更多信息并希望我做对了你想做的事。

【讨论】:

以上是关于iphone os 框架本身会抛出 NSException 吗?的主要内容,如果未能解决你的问题,请参考以下文章

导航到“/elmah.axd”时会抛出“缺少根元素”错误

组织者报告,“iPhone OS 的版本与支持开发的 iPhone OS 不匹配”

MAC OS X 10.8 上的 gcc 4.8 抛出“架构 x86_64 的未定义符号:”

python os模块创建目录

实体框架核心错误? SaveChanges 抛出选择

android.os.NetworkOnMainThreadException