2015年01月12日 14:51:10
一、获取系统的错误信息
比如移动文件时,获取文件操作错误:
通常可以通过下面语句,自定义个NSError对象
code错误标识, 系统的code一般都大于零,自定code可以用枚举(最好用负数, 但不是必须的)
userInfo自定义错误信息,NSLocalizedDescriptionKey是NSError头文件中预定义的键,标识错误的本地化描述
可以通过NSError的localizedDescription方法获得对应的值信息
主调用函数一般传入NSError指针的指针,来获取错误信息,例如
1.NSError对象中,主要有三个私有变量
错误域(NSInteger): _domain
错误标示(NSString *):_code
错误详细信息(NSDictionary *):_userInfo
通常用_domain和_code一起标识一个错误信息
获取_domain
- (NSString *)domain;
获取 _code
- (NSInteger)code;
获取 _userInfo
- (NSDictionary *)userInfo;
2.预定义域
AppKit和Foundation库中主要的错误域
NSString *const NSCocoaErrorDomain;
其他域
推荐的标准方式,通用键
NSString *const NSUnderlyingErrorKey;
其他键,对应各自读取信息的方法:
详细描述键
比如移动文件时,获取文件操作错误:
-
NSError *e = nil;
-
[[NSFileManager defaultManager] moveItemAtPath:sourcePath toPath:targetPath error:&e];
-
if (e) {
-
NSLog(@"move failed:%@", [e localizedDescription]);
-
}
NSError *e = nil;
取地址&e
如果有错误信息,打印错误的本地化描述-
if (e) {
-
NSLog(@"move failed:%@", [e localizedDescription]);
-
}
通常可以通过下面语句,自定义个NSError对象
-
-
typedef enum {
-
XDefultFailed = -1000,
-
XRegisterFailed,
-
XConnectFailed,
-
XNotBindedFailed
-
}CustomErrorFailed;
-
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:@"is a error test"
-
forKey:NSLocalizedDescriptionKey];
-
NSError *aError = [NSError errorWithDomain:CustomErrorDomain code:XDefultFailed userInfo:userInfo];
code错误标识, 系统的code一般都大于零,自定code可以用枚举(最好用负数, 但不是必须的)
userInfo自定义错误信息,NSLocalizedDescriptionKey是NSError头文件中预定义的键,标识错误的本地化描述
可以通过NSError的localizedDescription方法获得对应的值信息
主调用函数一般传入NSError指针的指针,来获取错误信息,例如
-
- (Bool)doSomething:(NSDictionary *)parameter1 error:(NSError **)aError
-
{
-
//TODO: do something
-
*aError = [NSError errorWithDomain:CustomErrorDomain code:XDefultFailed userInfo:userInfo];
-
return Yes;
-
}
1.NSError对象中,主要有三个私有变量
错误域(NSInteger): _domain
错误标示(NSString *):_code
错误详细信息(NSDictionary *):_userInfo
通常用_domain和_code一起标识一个错误信息
获取_domain
- (NSString *)domain;
获取 _code
- (NSInteger)code;
获取 _userInfo
- (NSDictionary *)userInfo;
2.预定义域
AppKit和Foundation库中主要的错误域
NSString *const NSCocoaErrorDomain;
其他域
-
NSString *const NSPOSIXErrorDomain;
-
NSString *const NSOSStatusErrorDomain;
-
NSString *const NSMachErrorDomain;
推荐的标准方式,通用键
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