iOS NSError 자세히 NSError 오류 코드 대조표 사용자 정의 NSError

8773 단어
1. 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;//오류 도메인
    오류 영역은 주로 네 가지가 있는데 카본 프레임워크의 Error에 대해서는 OS Status domain(NSOS Status Error Domain), POSIX error에 대해서는 NSPOSIX Error Domain에 속하고 우리의 iOS 개발에 대해서는 일반적으로 NSCocoa Error Domain을 사용한다.NSError.h가 4개의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;
    미리 정의된 사용자 info 키 이름
    NSString *const NSUnderlyingErrorKey;//일반 키 NSString*const NSLocalizedDescriptionKey를 사용하는 것이 좋습니다.상세 설명 키 NSString*const NSLocalizedFailureReasonErrorKey;//장애 원인 키 NSString*const NSLocalizedRecovery SuggestionErrorKey;//복구 권장 키 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]);
    

    2. NSError 오류 코드 대조표
    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 }
    3. NSError 사용자 정의
    시스템의 NSError는 다음과 같은 코드를 제공하여 사용자 정의할 수 있습니다.
    YXError.h와 YXError.m
    [objc] view plaincopy
  • //
  • //YXError.h
  • //CustomYXError
  • //

  • 4
  • //Copyright(c) 2014년 Y.X. All rights reserved
  • //
  • import

  • 4
  • //자체 오류 코드 추가
  • 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 plaincopy
  • //
  • //YXError.m
  • //CustomYXError
  • //

  • 4
  • //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 plaincopy
  • import "AppDelegate.h"
  • import "YXError.h"
  • @implementation AppDelegate
  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

  • {

  • 4
  • //NSError 사용자 정의 4
  • NSError *error = [YXError errorCode:Crash
  • userInfo:nil];
  • NSLog(@"%@", error);

  • 4
  • //NSError 한 개 번역(code 값을 문자열로 번역)
  • NSLog(@"%@", [YXError transformCodeToStringInfo:-10000]);
  • return YES;
  • }
  • @end

  • 참조 링크:https://blog.csdn.net/hdfqq188816190/article/details/52754943

    좋은 웹페이지 즐겨찾기