处理在通过NSObject的performSelectorOnMainThread调用的方法期间引发的异常:withObject:waitUntilDone:

时间:2008-09-30 21:29:52

标签: objective-c cocoa macos exception

如果通过NSObject的myMethod:调用,performSelectorOnMainThread:withObject:waitUntilDone:中引发的异常会发生什么?

特别是,我可以在performSelectorOnMainThread这样的调用范围内捕获它们吗?

@try {
    [self performSelectorOnMainThread:@selector(myMethod) withObject:nil waitUntilDone:YES];
} @catch(NSException *e) {
    //deal with exception raised in myMethod here??
}

我意识到如果waitUntilDone为NO,则语义很奇怪。

1 个答案:

答案 0 :(得分:5)

你将无法像那样抓住他们。 Cocoa可以捕获并记录控制台的异常,但它不会在调用-perform的线程中重新引发它们。相反,你可以在-myMethod中捕获它们:(或者调用-myMethod的包装器:)并将它们存储在你的其他线程可以读取它们的地方。