用OBJC编程 8 - Dealing with Errors
使用NSError,委托方法会产生Error-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
NSError包括错误码,错误业务领域domain和描述。为保证每个错误码唯一,使用了domain,NSURLConnection的domain是NSURLErrorDomain通过引用参数传递Error-(BOOL)WriteToURL:(NSURL *)aURL option:(NSDataWritingOptions)mask error:(NSError**) errorPtr;
//////////////////////////
NSError *anyError;
BOOL sucess = [receivedData writeToURL:someLocalFileURL option:0 error:&anyError];
if(!success){
NSLog(@"Write failed with error: %@", anyError);
//present error to user
}
// 如果writeToURL发生错误,返回NO,并且更新anyError
// 如果你对error不感兴趣,可以传递NULL
产生你自己的errorNSString *domain = @"com.MyCompany.MyApplication.ErrorDomain";
NSString *desc = NSLocalizedString(@"Unable to,,,", @"");
NSDictionary *userInfo = @{NSLocalizedDescriptionKey : desc};
NSError *error = [NSError errorWithDomain:domain code:-101 userInfo:userInfo];
//////////////////////
- (BOOL) doSomethingThatMayGenerateAnError:(NSError **)errorPtr;
//////////////////
-(BOOL)doSomethingThatMayGenerateAnError:(NSError **)errorPtr{
//,,,
// error occurred
if(errorPtr){
*errorPtr = [NSError errorWithDomain:,,, code:,,, userInfo:,,,];
}
return NO;
}
使用异常OBJC像其他语言一样支持异常,NSException和NSError一样是一个对象@try{
// 可能导致异常
}
@catch (NSException *exception){
// 处理异常
}
@finally{
// 清理,处理无异常情况
}