- (ObjectToHome*)doWorkWithTasks:(NSMutableArray*)tasks { @try { [(Task*)[tasks lastObject] done]; [tasks removeLastObject]; return [tasks count] > 0 ? [self doWorkWithTasks: tasks] : self ; } @catch (NSException * exception) { [tasks insertObject: [Task taskWithException: exception] atIndex:0]; [self doWorkWithTasks: tasks]; } @finally {} }