示例:
@try {
// 1) do bad stuff that can throw an exception...
// 2) do some more stuff
// 3) ...and more...
}
@catch (NSException *e) {
NSLog(@"Error: %@: %@", [e name], [e reason]);
}
如果1)抛出异常,该块是否会立即取消,如函数返回或循环中断?或者2)和3)将被处理,无论1)中发生什么?
答案 0 :(得分:4)
如果发生异常,则块的执行立即中断,并且@catch部分(如果它处理适当的异常类型)被执行。
示例代码:
@try {
NSArray* arr = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
NSLog([arr objectAtIndex: 0]);
NSLog([arr objectAtIndex: 5]);
NSLog(@"Lala");
}
@catch (NSException * e) {
NSLog(@"%@, %@", [e name], [e reason]);
}
Output:
1
NSRangeException, *** -[NSCFArray objectAtIndex:]: index (5) beyond bounds (3)