다른 스레드의 한 스레드에서 발생하는 예외를 catch 할 수 있습니까? 예를 들어, 내 스레드에서 스레드를 생성하고 있습니다. 생성 된 스레드가 catch되지 않는 예외를 throw 할 수 있습니다. 산란 스레드가 이러한 예외를 잡을 수 있습니까?Objective-C에서 다른 스레드의 한 스레드에서 예외가 발생하면 catch 할 수 있습니까?
하나의 해결책은 생성 된 스레드의 진입 점에서 예외를 catch하고 NSNotification
을 게시하여 예외를 처리하는 것입니다. 그런 다음 생성 스레드는 NSNotification
을 수신 할 수 있습니다. 그러나이 솔루션은 기본적으로 다른 유형의 NSException
이 주어진 @catch 절을 매개 변수로 다시 구현하기 때문에 약간 코키 감이 있습니다. 다른 해결책이 있는지 확인하고 싶었습니다.
예외는 iOS/Mac OS X *에서 복구 할 수없는 오류를 나타내는 데에만 사용됩니다. 복구 할 수있는 항목에 대한 예외를 사용하고 있다면 잘못 처리하고있는 것입니다. – bbum
복구 할 수없는 오류에 대해서만 예외를 사용하는 것은 관습 *이며 그 자체가 잘못되지 않습니다 *. Obj-C (b) 리소스 누수 (b2) 메모리 누수에서 잘 수행되지 않는 예외를 사용하는 데는 세 가지 공통적 인 반대가 있습니다. (a) 어쨌든해야하는 예외적 인 상황에서만 사용하면 완화됩니다. (b) 언어와 무관 한 예외 기반 설계로 처리해야하며, (b2) (b)의 하위 집합은 가비지 콜렉션, Obj-C++의 ARC 또는'-fobjc-arc-exceptions'을 사용하는 Obj-C의 ARC를 지원합니다. 따라서 예외를 올바르게 사용하면 "잘못하고있는 것"이 아닙니다. 귀하의 질문에 @Seva를 참조하십시오. – CRD
@bbum 이는 "복구 할 수없는"상황입니다. –