用OBJC编程 8 - Dealing with Errors

用OBJC编程 8 - Dealing with Errors

用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

产生你自己的error
NSString  * 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{
   
//  清理,处理无异常情况
}





你可能感兴趣的:(用OBJC编程 8 - Dealing with Errors)