错误则是用户级别的问题,比如尝试加载一个不存在的文件.因为错误是正常程序执行时预期的,所以在这类错误发生时,你应该手动核查这类情况并告知用户.大部分情况下,错误不会引起程序崩溃.
错误代表着可预料的问题,并且有很多类型的操作可以在不引起程序崩溃的的情况下失败,它们比异常更常见.与异常不同,这种错误核查是高质量代码的常规项.
NSError类封装了失败操作的详细内容.
属性描述
domainNSString类型,包含了错误的domain.被用来将错误组织成层级结构并且保证错误码不会冲突
codeNSInteger类型,标识了error的ID.在相同domain中的每个error都有一个唯一的值
userInfoNSDictionary类型,其中的key-value对包含了错误的额外信息, (键值对内容)取决与错误类型
NSError对象的userInfo字典比NSException的字典版本提供了更多内容.一些预定义的键被定义为常量,如下表:
键值
NSLocalizedDescriptionKeyNSString类型,代表着错误的全部描述.通常也包含了失败原因
NSLocalizedFailureReasonErrorKeyNSString类型,简洁的错误原因描述
NSUnderlyingErrorKey对代表着下一高层次的domain中的错误的另一个NSError引用
根据错误(情况), 这个字典也包含其他特殊的domain信息.比如, 文件加载错误对应的key是NSFilePathErrorKey,它(对应的value)包含了所请求文件的路径.
注意,localizedDescription和localizedFailureReason方法是分别访问头两个key的可选方式.
使用如下: