美文网首页
NSError错误code对照表

NSError错误code对照表

作者: 零零321 | 来源:发表于2018-05-11 10:01 被阅读0次

    原文链接

    一、NSError是系统错误信息类

    //两种初始化方法:其中,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;//错误域

    错误域主要有四个,对于Carbon框架的Error,归于OSStatus domain(NSOSStatusErrorDomain),对于POSIX error,归于NSPOSIXErrorDomain,而对于我们的iOS开发,一般使用NSCocoaErrorDomain。NSError.h定义了四个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;//错误代码

    @property (readonly, copy) NSDictionary *userInfo;//错误信息

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

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

    @property (nullable, readonly, copy) NSString *localizedRecoverySuggestion;//获取恢复建议

    @property (nullable, readonly, copy) NSArray *localizedRecoveryOptions;本地恢复建议

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

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

    预定义的userinfo键名

    NSString *const NSUnderlyingErrorKey;//推荐的标准方式,通用键

    NSString *const NSLocalizedDescriptionKey;             // 详细描述键

    NSString *const NSLocalizedFailureReasonErrorKey;      // 失败原因键

    NSString *const NSLocalizedRecoverySuggestionErrorKey; //恢复建议键

    NSString *const NSLocalizedRecoveryOptionsErrorKey;    // 恢复选项键

    //其他键

    NSString *const NSRecoveryAttempterErrorKey; 

    NSString *const NSHelpAnchorErrorKey; 

    NSString *const NSStringEncodingErrorKey ; 

    NSString *const NSURLErrorKey; 

    NSString *const NSFilePathErrorKey; 

    用法示例:

    NSDictionary *userInfo1 = [NSDictionary dictionaryWithObjectsAndKeys:@"由于文件不存在,无法打开", NSLocalizedDescriptionKey, @"失败原因:文件不存在", NSLocalizedFailureReasonErrorKey, @"恢复建议:请创建该文件",NSLocalizedRecoverySuggestionErrorKey,nil];

    NSError *error = [[NSError alloc] initWithDomain:NSCocoaErrorDomain code:4 userInfo:userInfo1];//此处code是4,对照下面对照表4代表文件不存在。userinfo传userinfo1 查看自定义打印。userinfo传nil,查看本地化描述。

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

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

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

    二、NSError错误code对照表

    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

    系统的NSError是可以自己定制的,以下提供代码来实现并表示如何使用:

    YXError.h 与 YXError.m

    [objc] view plain copy

    //  

    //  YXError.h  

    //  CustomYXError  

    //  

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

    //  

    #import   

    // 自行添加错误码  

    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  

    {  

    // 定制一个NSError  

    NSError *error = [YXError errorCode:Crash  

     userInfo:nil];  

    NSLog(@"%@", error);  

    // 翻译一个NSError(将code值翻译成字符串)  

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

    return YES;  

    }  

    @end  

    相关文章

      网友评论

          本文标题:NSError错误code对照表

          本文链接:https://www.haomeiwen.com/subject/opoxdftx.html