NSError錯(cuò)誤code對(duì)照表

原文鏈接

一碉就、NSError是系統(tǒng)錯(cuò)誤信息類(lèi)

//兩種初始化方法:其中,domain 不能為空 dict可以為空

- (instancetype)initWithDomain:(NSErrorDomain)domain code:(NSInteger)code userInfo:(nullable NSDictionary *)dict;

+ (instancetype)errorWithDomain:(NSErrorDomain)domain code:(NSInteger)code userInfo:(nullable NSDictionary *)dict;

@property (readonly, copy) NSErrorDomain domain;//錯(cuò)誤域

錯(cuò)誤域主要有四個(gè)铛纬,對(duì)于Carbon框架的Error盒让,歸于OSStatus domain(NSOSStatusErrorDomain)汗贫,對(duì)于POSIX error,歸于NSPOSIXErrorDomain耿战,而對(duì)于我們的iOS開(kāi)發(fā)蛋叼,一般使用NSCocoaErrorDomain。NSError.h定義了四個(gè)domain

{

// Predefined domain for errors from most AppKit and Foundation APIs.

FOUNDATION_EXPORT NSErrorDomain const NSCocoaErrorDomain;

// Other predefined domains; value of "code" will correspond to preexisting values in these domains.

FOUNDATION_EXPORT NSErrorDomain const NSPOSIXErrorDomain;

FOUNDATION_EXPORT NSErrorDomain const NSOSStatusErrorDomain;

FOUNDATION_EXPORT NSErrorDomain const NSMachErrorDomain;

}

@property (readonly) NSInteger code;//錯(cuò)誤代碼

@property (readonly, copy) NSDictionary *userInfo;//錯(cuò)誤信息

@property (readonly, copy) NSString *localizedDescription;//獲取本地化描述

@property (nullable, readonly, copy) NSString *localizedFailureReason;//獲取失敗原因

@property (nullable, readonly, copy) NSString *localizedRecoverySuggestion;//獲取恢復(fù)建議

@property (nullable, readonly, copy) NSArray *localizedRecoveryOptions;本地恢復(fù)建議

@property (nullable, readonly, strong) id recoveryAttempter;

@property (nullable, readonly, copy) NSString *helpAnchor;

預(yù)定義的userinfo鍵名

NSString *const NSUnderlyingErrorKey;//推薦的標(biāo)準(zhǔn)方式剂陡,通用鍵

NSString *const NSLocalizedDescriptionKey;???????????? //?詳細(xì)描述鍵

NSString *const NSLocalizedFailureReasonErrorKey;????? // 失敗原因鍵

NSString *const NSLocalizedRecoverySuggestionErrorKey; //恢復(fù)建議鍵

NSString *const NSLocalizedRecoveryOptionsErrorKey;??? // 恢復(fù)選項(xiàng)鍵

//其他鍵

NSString *const NSRecoveryAttempterErrorKey;?

NSString *const NSHelpAnchorErrorKey;?

NSString *const NSStringEncodingErrorKey ;?

NSString *const NSURLErrorKey;?

NSString *const NSFilePathErrorKey;?

用法示例:

NSDictionary *userInfo1 = [NSDictionary dictionaryWithObjectsAndKeys:@"由于文件不存在狈涮,無(wú)法打開(kāi)", NSLocalizedDescriptionKey, @"失敗原因:文件不存在", NSLocalizedFailureReasonErrorKey, @"恢復(fù)建議:請(qǐng)創(chuàng)建該文件",NSLocalizedRecoverySuggestionErrorKey,nil];

NSError *error = [[NSError alloc] initWithDomain:NSCocoaErrorDomain code:4 userInfo:userInfo1];//此處code是4,對(duì)照下面對(duì)照表4代表文件不存在鸭栖。userinfo傳userinfo1 查看自定義打印歌馍。userinfo傳nil,查看本地化描述晕鹊。

NSLog(@"========%@",[error localizedDescription]);

NSLog(@"========%@",[error localizedFailureReason]);

NSLog(@"========%@",[error localizedRecoverySuggestion]);

二松却、NSError錯(cuò)誤code對(duì)照表

Foundation Constants Reference

NSError Codes

NSError codes in the Cocoa error domain.

enum {

NSFileNoSuchFileError = 4,

NSFileLockingError = 255,

NSFileReadUnknownError = 256,

NSFileReadNoPermissionError = 257,

NSFileReadInvalidFileNameError = 258,

NSFileReadCorruptFileError = 259,

NSFileReadNoSuchFileError = 260,

NSFileReadInapplicableStringEncodingError = 261,

NSFileReadUnsupportedSchemeError = 262,

NSFileReadTooLargeError = 263,

NSFileReadUnknownStringEncodingError = 264,

NSFileWriteUnknownError = 512,

NSFileWriteNoPermissionError = 513,

NSFileWriteInvalidFileNameError = 514,

NSFileWriteInapplicableStringEncodingError = 517,

NSFileWriteUnsupportedSchemeError = 518,

NSFileWriteOutOfSpaceError = 640,

NSFileWriteVolumeReadOnlyError = 642m

NSKeyValueValidationError = 1024,

NSFormattingError = 2048,

NSUserCancelledError = 3072,

NSFileErrorMinimum = 0,

NSFileErrorMaximum = 1023,

NSValidationErrorMinimum = 1024,

NSValidationErrorMaximum = 2047,

NSFormattingErrorMinimum = 2048,

NSFormattingErrorMaximum = 2559,

NSPropertyListReadCorruptError = 3840,

NSPropertyListReadUnknownVersionError = 3841,

NSPropertyListReadStreamError = 3842,

NSPropertyListWriteStreamError = 3851,

NSPropertyListErrorMinimum = 3840,

NSPropertyListErrorMaximum = 4095

NSExecutableErrorMinimum = 3584,

NSExecutableNotLoadableError = 3584,

NSExecutableArchitectureMismatchError = 3585,

NSExecutableRuntimeMismatchError = 3586,

NSExecutableLoadError = 3587,

NSExecutableLinkError = 3588,

NSExecutableErrorMaximum = 3839,

}

URL Loading System Error Codes

These values are returned as the error code property of an NSError object with the domain “NSURLErrorDomain”.

typedef enum

{

NSURLErrorUnknown = -1,

NSURLErrorCancelled = -999,

NSURLErrorBadURL = -1000,

NSURLErrorTimedOut = -1001,

NSURLErrorUnsupportedURL = -1002,

NSURLErrorCannotFindHost = -1003,

NSURLErrorCannotConnectToHost = -1004,

NSURLErrorDataLengthExceedsMaximum = -1103,

NSURLErrorNetworkConnectionLost = -1005,

NSURLErrorDNSLookupFailed = -1006,

NSURLErrorHTTPTooManyRedirects = -1007,

NSURLErrorResourceUnavailable = -1008,

NSURLErrorNotConnectedToInternet = -1009,

NSURLErrorRedirectToNonExistentLocation = -1010,

NSURLErrorBadServerResponse = -1011,

NSURLErrorUserCancelledAuthentication = -1012,

NSURLErrorUserAuthenticationRequired = -1013,

NSURLErrorZeroByteResource = -1014,

NSURLErrorCannotDecodeRawData = -1015,

NSURLErrorCannotDecodeContentData = -1016,

NSURLErrorCannotParseResponse = -1017,

NSURLErrorFileDoesNotExist = -1100,

NSURLErrorFileIsDirectory = -1101,

NSURLErrorNoPermissionsToReadFile = -1102,

NSURLErrorSecureConnectionFailed = -1200,

NSURLErrorServerCertificateHasBadDate = -1201,

NSURLErrorServerCertificateUntrusted = -1202,

NSURLErrorServerCertificateHasUnknownRoot = -1203,

NSURLErrorServerCertificateNotYetValid = -1204,

NSURLErrorClientCertificateRejected = -1205,

NSURLErrorClientCertificateRequired = -1206,

NSURLErrorCannotLoadFromNetwork = -2000,

NSURLErrorCannotCreateFile = -3000,

NSURLErrorCannotOpenFile = -3001,

NSURLErrorCannotCloseFile = -3002,

NSURLErrorCannotWriteToFile = -3003,

NSURLErrorCannotRemoveFile = -3004,

NSURLErrorCannotMoveFile = -3005,

NSURLErrorDownloadDecodingFailedMidStream = -3006,

NSURLErrorDownloadDecodingFailedToComplete = -3007

}

三、自定義NSError

系統(tǒng)的NSError是可以自己定制的溅话,以下提供代碼來(lái)實(shí)現(xiàn)并表示如何使用:

YXError.h 與?YXError.m

[objc]?view plain?copy

//??

//??YXError.h??

//??CustomYXError??

//??

//??Copyright?(c)?2014年?Y.X.?All?rights?reserved.??

//??


#import???


//?自行添加錯(cuò)誤碼??

typedef?enum?:?NSUInteger?{??

Crash?????=?-10000,??

??DisConnect,??

??Unknow,??

}?YXErrorCode;??


@interface?YXError?:?NSObject??


+?(NSError?*)errorCode:(YXErrorCode)code?userInfo:(NSDictionary?*)dic;??

+?(NSString?*)transformCodeToStringInfo:(YXErrorCode)code;??


@end??

[objc]?view plain?copy

//??

//??YXError.m??

//??CustomYXError??

//??

//??Copyright?(c)?2014年?Y.X.?All?rights?reserved.??

//??


#import?"YXError.h"??


static?NSDictionary?*errorDictionary?=?nil;??


@implementation?YXError??


+?(void)initialize??

{??

if?(self?==?[YXError?class])??

????{??

????????errorDictionary?=?\??

????????@{??

/*?code????????:????????errorWithDomain?*/??

/*?====================================?*/??


@(Crash)???????:@"Crash",??

@(DisConnect)??:@"DisConnect",??

@(Unknow)??????:@"Unknow",??


/*?====================================?*/??

??????????};??

????}??

}??


+?(NSError?*)errorCode:(YXErrorCode)code?userInfo:(NSDictionary?*)dic??

{??

return?[NSError?errorWithDomain:errorDictionary[@(code)]??

?code:code??

?userInfo:dic];??

}??


+?(NSString?*)transformCodeToStringInfo:(YXErrorCode)code??

{??

return?errorDictionary[@(code)];??

}??


@end??

以下是使用的代碼:

[objc]?view plain?copy

//??

//??AppDelegate.m??

//??NSError??

//??

//??Copyright?(c)?2014年?YouXianMing.?All?rights?reserved.??

//??


#import?"AppDelegate.h"??

#import?"YXError.h"??


@implementation?AppDelegate??


-?(BOOL)application:(UIApplication?*)application?didFinishLaunchingWithOptions:(NSDictionary?*)launchOptions??

{??

//?定制一個(gè)NSError??

NSError?*error?=?[YXError?errorCode:Crash??

?userInfo:nil];??

NSLog(@"%@",?error);??


//?翻譯一個(gè)NSError(將code值翻譯成字符串)??

NSLog(@"%@",?[YXError?transformCodeToStringInfo:-10000]);??


return?YES;??

}??


@end??

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晓锻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子飞几,更是在濱河造成了極大的恐慌砚哆,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件循狰,死亡現(xiàn)場(chǎng)離奇詭異窟社,居然都是意外死亡券勺,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)灿里,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)关炼,“玉大人,你說(shuō)我怎么就攤上這事匣吊∪宸鳎” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵色鸳,是天一觀的道長(zhǎng)社痛。 經(jīng)常有香客問(wèn)我,道長(zhǎng)命雀,這世上最難降的妖魔是什么蒜哀? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮吏砂,結(jié)果婚禮上撵儿,老公的妹妹穿的比我還像新娘。我一直安慰自己狐血,他們只是感情好淀歇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著匈织,像睡著了一般浪默。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缀匕,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天纳决,我揣著相機(jī)與錄音,去河邊找鬼弦追。 笑死岳链,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的劲件。 我是一名探鬼主播掸哑,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼零远!你這毒婦竟也來(lái)了苗分?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤牵辣,失蹤者是張志新(化名)和其女友劉穎摔癣,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡择浊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年戴卜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琢岩。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡投剥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出担孔,到底是詐尸還是另有隱情江锨,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布糕篇,位于F島的核電站啄育,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拌消。R本人自食惡果不足惜挑豌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拼坎。 院中可真熱鬧浮毯,春花似錦、人聲如沸泰鸡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)盛龄。三九已至,卻和暖如春芳誓,著一層夾襖步出監(jiān)牢的瞬間余舶,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工锹淌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匿值,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓赂摆,卻偏偏與公主長(zhǎng)得像挟憔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子烟号,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容