用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{
// 清理,處理無異常情況
}