如果我把一个try catch并最终在异步GCD调用中,最终通常似乎没有执行,我也不确定捕获,似乎在某些时候执行。
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
之外,但我更愿意知道我的尝试已完全执行。
答案 0 :(得分:2)
尽量避免@try/@catch
进行控制流操作。
此外,您的代码示例对我来说很好。始终执行@finally
块,如果抛出异常,则@catch
块也一样。