自定义错误信息
#define CustomRequesteErrorDomain @"wkrequest.error"
typedef enum : NSUInteger {
WKRequestDefaultError = - 100,
WKRequestFailed,
WKRequestConnectFailed,
} WKRequestError;
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:@"request error info" forKey:NSLocalizedDescriptionKey];
NSError *aError = [NSError errorWithDomain:CustomRequesteErrorDomain code:WKRequestConnectFailed userInfo:userInfo];
其中,自定义错误域对象CustomErrorDomain
,通常用域名反写,也可以是任何其他字符串
code
错误标识, 系统的code一般都大于零,自定code
可以用枚举(最好用负数, 但不是必须的)
userInfo
自定义错误信息,NSLocalizedDescriptionKey
是NSError
头文件中预定义的键,标识错误的本地化描述
可以通过NSError
的localizedDescription
方法获得对应的值信息
NSError头文件解析
1、变量
NSError对象中,主要有三个私有变量
错误域(NSInteger): _domain
错误标示(NSString *):_code
错误详细信息(NSDictionary *):_userInfo
通常用_domain
和_cod
e一起标识一个错误信息
获取_domain
- (NSString *)domain;
获取 _code
- (NSInteger)code;
获取 _userInfo
- (NSDictionary *)userInfo;
2、预定义域
AppKit
和Foundation
库中主要的错误域
NSString *const NSCocoaErrorDomain;
其他域
NSString *const NSPOSIXErrorDomain;
NSString *const NSOSStatusErrorDomain;
NSString *const NSMachErrorDomain;
3、预定义的userinfo键名
推荐的标准方式,通用键
NSString *const NSUnderlyingErrorKey;
其他键,对应各自读取信息的方法:
详细描述键
NSString *const NSLocalizedDescriptionKey;
取方法
- (NSString *)localizedDescription;
失败原因键
NSString *const NSLocalizedFailureReasonErrorKey
取方法
- (NSString *)localizedFailureReason;
恢复建议键
NSString *const NSLocalizedRecoverySuggestionErrorKey;
取方法
- (NSString *)localizedRecoverySuggestion;
恢复选项键
NSString *const NSLocalizedRecoveryOptionsErrorKey
取方法
- (NSArray *)localizedRecoveryOptions;
其他键
NSString *const NSRecoveryAttempterErrorKey;
NSString *const NSHelpAnchorErrorKey;
NSString *const NSStringEncodingErrorKey ;
NSString *const NSURLErrorKey;
NSString *const NSFilePathErrorKey;
用法:
NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:@"这是错误详细的描述信息", NSLocalizedDescriptionKey, error, NSUnderlyingErrorKey, nil]];
4、初始化方法
- (id)initWithDomain:(NSString *)domain code:(NSInteger)code userInfo:(NSDictionary *)dict;
+ (id)errorWithDomain:(NSString *)domain code:(NSInteger)code userInfo:(NSDictionary *)dict;
推荐阅读:
http://www.cnblogs.com/xiaodao/archive/2012/07/04/2576292.html