문제
Cocoa 함수에서 오류 코드 결과를 얻은 경우 그 의미를 쉽게 파악할 수 있는 방법이 있습니까(프레임워크 번들의 모든 .h 파일을 검색하는 것 외에)?
해결책
당신은 <Framework/FrameworkErrors.h>
오류를 반환하는 메소드를 사용하고 있는 프레임워크의 헤더입니다.
예를 들어, NSError
Foundation 프레임워크의 메소드에서 얻은 Cocoa 도메인에는 code
에 설명된 속성 <Foundation/FoundationErrors.h>
머리글.AppKit과 마찬가지로 <AppKit/AppKitErrors.h>
핵심 데이터 및 <CoreData/CoreDataErrors.h>
.
또한, 해당 설명을 인쇄하면 NSError
디버거에서는 오류 도메인과 코드뿐만 아니라 API 참조에서 찾아볼 수 있도록 실제 오류 코드 상수의 이름도 포함해야 합니다.
다른 팁
Apple의 '오류 도메인' 및 '오류 코드' 섹션 오류 처리 프로그래밍 가이드 이 문제를 합리적으로 잘 해결하세요.다음을 수행해야 합니다.
오류를 기록하고 두 가지를 모두 기록합니다. 오류 도메인 (오류 코드 정의를 찾을 수 있는 위치를 알려주는 사람이 읽을 수 있고 Google에서 검색할 수 있는 문자열) 및 에러 코드 그 자체(정수)
Google에서 검색하거나 아래 목록을 읽고 해당 오류 도메인에 대한 오류 코드가 정의된 헤더 파일의 이름을 알아보세요.
해당 헤더 파일에서 발생한 오류 코드를 검색하세요.오류 코드에 대한 상수 이름(예:
ENOMEM
), 그리고 설명적인 코멘트(예:/* Cannot allocate memory */
) 오류가 무엇을 의미하는지 설명합니다.설명이 없고 상수 이름이 설명이 필요하지 않은 경우 Google에서 상수 이름만 검색하면 적절한 설명을 찾을 수 있습니다.
주요 오류 도메인의 일부 헤더 파일:
NSCocoaErrorDomain
오류 코드 선언은 세 개의 헤더 파일에 분산되어 있습니다.
<Foundation/FoundationErrors.h>
(일반 재단 오류 코드)<AppKit/AppKitErrors.h>
(일반 AppKit 오류 코드)<CoreData/CoreDataErrors.h>
(핵심 데이터 오류 코드)
NSURLErrorDomain
확인하다 NSURLError.h
NSXMLParserErrorDomain
확인하다NSXMLParser.h
NSMachErrorDomain
확인하다 /usr/include/mach/kern_return.h
NSPOSIXErrorDomain
확인하다 /usr/include/sys/errno.h
NSOSStatusErrorDomain
확인하다
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacErrors.h
또한 Cocoa의 NSError는 최종 사용자에게 표시될 수 있도록 만들어졌습니다.그냥 로그하면 읽을 수 있어야 합니다.
Carbon의 OSStatus 등에 대해 이야기하고 있다면 MacErrors.h가 있습니다.
NSError 오류의 경우 다음 코드 줄을 추가하세요.
NSError *error;
// ... Some code that returns an error
// Get the error as a string
NSString *s = [error localizedDescription];
// Observe the code for yourself or display to the user.