錯誤則是用戶級別的問題,比如嘗試加載一個不存在的文件.因為錯誤是正常程序執行時預期的,所以在這類錯誤發生時,你應該手動核查這類情況并告知用戶.大部分情況下,錯誤不會引起程序崩潰.
錯誤代表著可預料的問題,并且有很多類型的操作可以在不引起程序崩潰的的情況下失敗,它們比異常更常見.與異常不同,這種錯誤核查是高質量代碼的常規項.
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的可選方式.
使用如下: