2008-09-30 7 views
4

NSObject의 performSelectorOnMainThread:withObject:waitUntilDone:을 통해 호출되는 경우 myMethod:에서 발생한 예외는 어떻게됩니까?NSObject의 performSelectorOnMainThread를 통해 호출 된 메서드에서 예외 처리 : withObject : waitUntilDone :

는 특히, 나는 waitUntilDone가 NO 경우 이것의 의미는 이상한 것을 깨닫게

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

... 이런 performSelectorOnMainThread에 대한 호출의 범위에서 그들을 잡을 수 있습니다.

답변

5

이렇게 잡을 수는 없습니다. 코코아는 예외를 잡아서 콘솔에 기록 할 수 있지만, -perform을 호출 한 스레드에서는 예외를 다시 발생시키지 않습니다. 대신에, -myMethod : (또는 -myMethod를 호출하는 래퍼)에 붙잡아서 다른 스레드가 읽을 수있는 곳에 저장할 수 있습니다.