博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]错误信息 NSError
阅读量:5147 次
发布时间:2019-06-13

本文共 2661 字,大约阅读时间需要 8 分钟。

一、获取系统的错误信息

比如移动文件时,获取文件操作错误:

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对象

复制代码

define CustomErrorDomain @"cn.ianhao.www"

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];
其中,自定义错误域对象CustomErrorDomain,通常用域名反写,也可以是任何其他字符串

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;
    }

三、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 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;

转载于:https://www.cnblogs.com/ianhao/p/4520870.html

你可能感兴趣的文章
二、输出到屏幕
查看>>
android中的 Toast 和 AlertDialog
查看>>
互联网协议入门(二)
查看>>
Java连接Oracle数据库的基类
查看>>
netstat用法及TCP state解析
查看>>
[转自小龙博客]优酷视频自动播放办法
查看>>
深入理解事件捕获冒泡
查看>>
软件设计入门2 数据库设计
查看>>
文件信息
查看>>
Hibernate 一对一外键单向关联
查看>>
笔记1
查看>>
Link-cut-tree 学习记录 & hdu4010
查看>>
ECharts使用小结
查看>>
JAVA实现MD5加密算法(使用MessageDigest)
查看>>
壮哉大微软,.Net人的春天来了,你准备好了嘛!
查看>>
Spine学习五- spine动画融合
查看>>
Python科学计算工具包
查看>>
2-4 zookeeper配置文件介绍,运行zk
查看>>
00_前情回顾
查看>>
运行项目psychologicalTest
查看>>