一、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

//

//  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

//

//  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

以下是使用的代码:

//

//  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 自定义错误_NSError错误code对照表相关推荐

  1. nserror 自定义错误_NSError 错误 code 对照表

    原博文地址:http://blog.csdn.net/yesjava/article/details/8056681 Foundation Constants Reference NSError Co ...

  2. nserror 自定义错误_iOS NSError错误code对照表

    一.NSError是系统错误信息类 两种初始化方法:其中,domain 不能为空 dict可以为空 - (instancetype)initWithDomain:(NSErrorDomain)doma ...

  3. ThinkPHP6项目基操(13.实战部分 项目中的自定义异常处理总结 错误页面API错误)

    项目中的自定义异常处理总结 错误页面&API错误 前言 一.异常分类 1. 控制器找不到 2. 方法找不到 3. 请求资源不存在 4. 系统內部异常.HTTP异常等 二.异常处理 1. 前置处 ...

  4. MySQL5添加外键约束错误 (Error Code : 1005)

    MySQL5添加外键约束错误解决方法 当添加MySQL表之间外键约束关系的时候,常常会发生这样的错误: Error Code : 1005 Can't create table './test/#sq ...

  5. 自定义php报错信息,自定义PHP的错误报告处理方式

    首先,我们要知道为什么要自定义PHP的错误报告方式. 答案就是影响美观.用户体验差. 我们知道,PHP哪条代码有问题,哪里就会报错,报错的样式如下图所示: 为了解决"影响美观.用户体验差&q ...

  6. WCF中使用自定义behavior提示错误的解决方法

    WCF中使用自定义behavior提示错误的解决方法 参考文章: (1)WCF中使用自定义behavior提示错误的解决方法 (2)https://www.cnblogs.com/shenba/arc ...

  7. TP6 自定义404,错误提示页面

    记录:自定义TP6404及错误提示页面. 1,配置config下的app.php配置文件 'exception_tmpl' => app()->isDebug()==true ? app( ...

  8. 如何自定义Tomcat 404错误页面

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 点击这里使用RSS ...

  9. 错误代码:40029, 错误信息:code 无效,微信原始报文:{“errcode“:40029,“errmsg“:“invalid code, rid: 63a4082d-7a02e2ba-1fa5

    错误代码:40029, 错误信息:code 无效,微信原始报文:{"errcode":40029,"errmsg":"invalid code, ri ...

最新文章

  1. Halliburton首席数据科学家兼技术研究员谈能源行业AI应用现状
  2. python百度网盘下载-python实现简单的百度云自动下载
  3. JavaSE(二)——循环语句
  4. 【PM】当大厂来临时,求生?求胜?
  5. CSMA/CD协议分析笔记
  6. 神经网络 demo(斯坦福)
  7. python函数手册 chm_Python中文文档
  8. 学习模式上的记录之统计篇四 关于excel里添加趋势线和回归统计的R square数值不一致的情况
  9. SecoClient 百度云安装包 亲测有效
  10. 云课堂智慧职教网页版登录入口_云课堂智慧职教网页版登录入口
  11. 字节跳动面试题后台_JAVA字节跳动面试题分享,一面
  12. win7如何设置wifi热点_教你win7如何设置网络共享文件夹
  13. 日文输入键盘罗马字对应表
  14. python 聊天机器人 中文_ 小智,又一个中文聊天机器人
  15. 调研报告与调查报告的区别及写作技巧
  16. mysql len函数的用法_SQL LEN() 函数
  17. 极客日报第 37 期:苹果官网出现价格 Bug;大众 CEO点评“苹果造车”;Spring Cloud 2020.0 正式发布
  18. 射频中IM3、IIP3、OIP3、G、P1dB指标计算
  19. SystemUi概述
  20. Python|简易银行ATM程序制作

热门文章

  1. ES6常用解构赋值有哪几种?
  2. 御龙在天以前服务器信息,御龙在天所有区的名字,合区前的
  3. CCNA 教学 大纲 50小时 CCNA www.91xueit.com 视频教学下载 同样的CCNA不一样的感觉
  4. 前台、后台ui的选择
  5. Qt股票软件企业级源码
  6. Windows Live Writer插件
  7. Bootstrap Table固定列及IE11兼容性问题解决
  8. 音视频封装格式、编码格式
  9. windows2000 sp4下载
  10. iOS推广渠道效果统计