关于ios:如何在iPhone应用程序中处理NSError?

How to deal with NSError in an iphone application?

本问题已经有最佳答案,请猛点这里访问。

有没有一种好的方法可以在iOS开发中处理NSError?我正在浏览一些在线参考资料,发现其中大多数都使用[NSApp presentError]来显示错误?

在ios中这绝对是不可能的,因为ios领域中没有所谓的NSApp。

我想知道除了打印什么之外,应该如何处理NSErrors?

错误确实是使用[error localizedDescription]

一个应该访问NSError类的错误代码属性并处理所有可能的错误

错误代码,可能会在其他情况下使用else if / ladder?

**如果可以解释NSError与

NSException? 为什么我们一开始会有两个不同的东西**


NSError是一个返回代码,您尝试在其中执行某些操作,但是尝试执行的操作无效。例如,您尝试打开一个文件,但是没有打开。 NSError指示错误情况,在不同的情况下使用相同的调用,可能不会收到错误(文件在那里)。 NSException表示某些致命错误。您试图写为null,试图写到字符串或数组的末尾。程序员应清除NSExceptions,NSErrors可能只是偶然的错误。
您使用NSError所做的操作取决于上下文。有时您想用警报通知用户,有时则想忽略它(例如您在编写新警报之前测试了不存在的资源)。大概至少,您希望NSLogs NSErrors(假设您使用宏将NSLogs去除最终代码)。


无论您使用NSErrors做什么,都取决于您的特定应用程序,只需使用常识即可。

与Java之类的其他语言不同,Objective-C中的异常异常占用大量资源。因此,

  • 使用异常指示不可恢复的程序错误。捕获此类异常的程序应在此后不久退出。框架并非旨在让您从异常中恢复。

  • 不要使用异常来表示用户错误,可恢复的错误或进行一般的流控制。这些情况应改为使用NSError处理。