10 error-handling objective-c nserror ios
面对多功能调用中错误反向传播的问题.
例如,
NSError *error = nil;
EMSPlanFolder *planner = [[EMSPlanFolder sharedPlanBuilder] buildPlanFromParsePlan:plan withError:&error];
if (error) {
//error
}
Run Code Online (Sandbox Code Playgroud)
接下来,它的功能:
- (EMSPlanFolder*)buildPlanFromParsePlan:(EMParsedPlan*)parsedPlan withError:(NSError *__autoreleasing*)err
{
....
....
[self deserializePlan:parsedPlan forPlan:newPlanFolder allowingNoEndDate:NO withError:err];
if(err && *err) {
[newPlanFolder.managedObjectContext performBlockAndWait:^{
[EMSPlanFolder deletePlan:newPlanFolder];
}];
return nil;
}
return newPlanFolder;
}
Run Code Online (Sandbox Code Playgroud)
接下来,它将:
- (void)deserializePlan:(NSArray*)planElements forPlan:(LMSPlanFolder*)planFolder allowingNoEndDate:(BOOL)allowNoEndDate withError:(NSError *__autoreleasing*)err {
....
....
if(err) {
*err = [NSError errorWithDomain:@"Application" code:-1 userInfo:@{ NSLocalizedDescriptionKey:[NSString stringWithFormat:@"Plan was not found."]}];
}
return;
}
Run Code Online (Sandbox Code Playgroud)
问题是,当它返回传播到第一个代码片段时会导致崩溃.有任何建议
小智 0
尝试这个:
NSError *error = nil;
EMSPlanFolder *planner = [[EMSPlanFolder sharedPlanBuilder] buildPlanFromParsePlan:plan withError:&error];
if (error) {
//error
}
- (EMSPlanFolder*)buildPlanFromParsePlan:(EMParsedPlan*)parsedPlan withError:(NSError **)err
{
....
....
[self deserializePlan:parsedPlan forPlan:newPlanFolder allowingNoEndDate:NO withError:&err];
if(err == nil) {
[newPlanFolder.managedObjectContext performBlockAndWait:^{
[EMSPlanFolder deletePlan:newPlanFolder];
}];
return nil;
}
return newPlanFolder;
}
- (void)deserializePlan:(NSArray*)planElements forPlan:(LMSPlanFolder*)planFolder allowingNoEndDate:(BOOL)allowNoEndDate withError:(NSError **)err {
....
....
if(err) {
*err = [NSError errorWithDomain:@"Application" code:-1 userInfo:@{ NSLocalizedDescriptionKey:[NSString stringWithFormat:@"Plan was not found."]}];
}
return;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |