如果我放了一个try catch,最后在一个异步GCD调用中,finally似乎通常不会被执行,我也不确定catch是否会被执行,似乎有时会执行。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
@try {
[self methodThatAlwaysThrowsAnException];
}@catch (NSException *exc) {
NSLog(@"Caught the Exception %@",exc);
}@finally{
NSLog(@"Should always execute");
}
});有人知道这是为什么吗?
因此,我将最终调用放在dispatch_async之外,但我更希望知道我的尝试是否已完全执行。
发布于 2012-10-30 01:01:45
对于控制流操作,尽量避免使用@try/@catch。
而且,你的代码样例对我来说很好。始终会执行@finally块,如果抛出异常,也会执行@catch块。
https://stackoverflow.com/questions/13126058
复制相似问题