Objective-C错误处理
2016-03-19 18:54
477 查看
Objective-C错误处理
OC里面的错误Error指的是所有的错误。而错误也可以划分为两种:程序代码本身的逻辑错误,和由于外部条件引起的执行错误。程序本身的错误 通常不会让用户知道,对这些错误的处理是为了保证程序的正常运行,这些错误也可以说是程序员犯的错误,比如数组越界访问等等。
运行时由于外部条件引起的错误,通常是不可控制的,比如网络断开,下载数据失败等。通常需要把错误的消息呈现给用户。
JAVA所有的错误都用Exception来处理,但是对于OC却不一样:NSError通常就是用来处理运行时的错误。而NSException就是专门用来处理程序员的错误。
- NSError
1. 错误的提醒
在Cocoa 和Cocoa Touch的类中都有很多有关错误提醒的方法,一旦错误发生,会抛出错误对象,以供其他方法来处理这个错误。很多协议都定义了异常处理方法,参数就是NSError对象。NSError对象封装了错误码、错误域以及错误描述。Cocoa和Cocoa Touch把很多错误划分成不同的错误域(Error Domain)。2. 有些方法返回错误对象的指针
在Cocoa 和Cocoa Touch的类中,有些方法不是直接抛出错误,而是把错误对象赋给指定的指针。比如:NSData类的方法writeToURL:options:error:。 NSError *anyError; BOOL success = [receivedData writeToURL:someLocalFileURL options:0 error:&anyError]; if (!success) { NSLog(@"Write failed with error: %@", anyError); // present error to user }
当发生错误的时候,会把错误的引用赋给anyError,并且返回一个布尔值。在使用的时候,要判断是否成功(没有发生错误),应该通过判断返回值,而不是去判断指针是否已经指向了错误。
当然,有时候对错误对象并不关心,只关心是否成功,那么可以用NULL作为error的参数。
3. 对可处理的错误进行处理和呈现
新建错误类首先要新建一个错误域,错误域的组成通常应该这样:
com.companyName.appOrFrameworkName.ErrorDomain
要为这个域里面的每个错误选一个唯一的错误码,加上描述(这会存储在用户字典中):
NSString *domain = @"com.MyCompany.MyApplication.ErrorDomain"; NSString *desc = NSLocalizedString(@"Unable to…", @""); NSDictionary *userInfo = @{ NSLocalizedDescriptionKey : desc }; NSError *error = [NSError errorWithDomain:domain code:-101 userInfo:userInfo];
- 异常处理NSException
和Java一样的,try-catch:@try{ } @catch(NSException *exception){ } @finally{ }
相关文章推荐
- Objective-C KVC&KVO
- Object.prototype.toString应用和原理探析
- Objective-C内存管理
- Objective-C block (块)
- Objective-C集合
- Objective-C之NSNumber
- Programming with Objective-C——翻译2章
- DOM和JQUERY 对HTML标记修改的冲突之 swfobject
- Objective - C类的扩展
- Objective-C 协议 protocol
- CCObject的分析:release retain基于2.2.3 增加3.2ref对比
- objc_setAssociatedObject 使用
- velocity和ruby和object-c的关联
- iOS:Xcode注释的用法---Objective C
- object-c和jre和jquery的关联
- framework和object-c和jquery的关联
- struts2和dos和object-c的关联
- Swift开发第九篇——Any和AnyObject&typealias和泛型接口
- object-c和jre和wireshark的关联
- jquery和object-c和c++的关联