내 질문은 this one과 비슷하지만 자세한 설명이 필요합니다. 나는 종종 다음과 같은 코드 중에 예외를 얻을 : 나는 objc_exception_throw
에 중단 점을 넣을 때핵심 데이터 : 오류 vs 예외 2 부
NSError* error;
if (![managedObjectContext save:&error]) {
NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
}
그러나, 나는 예외가 save
에서 발생되는 것을 알 수 있습니다 :
(gdb) po [$eax name]
NSInternalInconsistencyException
(gdb) po [$eax description]
optimistic locking failure
내가 기대하지 않을 것이다 이것은 docs이 낙관적 인 잠금 실패가 예외가 아니라 오류를 반환한다고 말하기 때문입니다.
제쳐두고 코드에서 @try ... @catch (NSException * e)
으로이 예외를 catch하는 것조차 보이지 않습니다. 그것은 모두 이상합니다.
문제를 해결하면 나 자신의 답을 수락하는 것을 잊지 마십시오. –
비슷한 문제가 있습니다. 예외가 내부적으로 발생하지만 병합 정책에 의해 해결되는 것 같습니다 : 일반적인 예외 중단 점을 사용하면 배경 컨텍스트의 스레드에서 예외를 catch합니다. 그러나 저장 작업 후에 또 다른 중단 점을 설정하면 저장 결과가 '예'이고 오류가 'nil'인 것을 볼 수 있습니다. 따라서 * 문제가 아닌 것으로 보입니다. 어쨌든 나는 그렇게 희망한다! –