저는 개인적으로 역 DNS 스타일 도메인을 사용합니다. 예를 들면 :
NSError * myInternalError = [NSError errorWithDomain:@"com.davedelong.myproject" code:42 userInfo:someUserInfo];
도메인의 세 번째 부분 ( @"myproject"
)은이 프로젝트의 오류 ( "My Project"
)와 다른 프로젝트의 오류 ( "My Other Project"
=> com.davedelong.myotherproject
) 를 구별하는 데 사용됩니다 .
그것은 그 개발자가 의도적으로 혼란하려고하지 않는 한, (나는 제 3 자 코드를 사용하고있는 경우) 내가 누구 다른 사람의 오류 도메인과 충돌하지 않을거야 것을 확인하는 간단한 방법입니다 단지 내가보기 엔 어려울 것 믿는 (나. ..).
코드 번호 지정 충돌에 대해서는 걱정하지 마십시오. 코드가 도메인 내에서 고유 한 한 괜찮습니다.
오류를 번역하는 것은 당신에게 달려 있습니다. 무엇을하든 잘 문서화하십시오. 개인적 으로 나는 모든 코드를 처리하고 모든 userInfo를 내 프로젝트에 더 특정한 것으로 변환 할 것인지 확신 할 수 없기 때문에 일반적으로 프레임 워크 생성 오류가 발생했을 때 전달합니다. 프레임 워크는 더 많은 코드를 변경 및 추가하거나 기존 코드의 의미를 변경할 수 있습니다. 또한 오류가 발생한 위치를보다 구체적으로 식별하는 데 도움이됩니다. 예를 들어 내 StackKit 프레임 워크가 com.stackkit
도메인 에서 오류를 생성하면 프레임 워크 문제라는 것을 알고 있습니다. 그러나에서 오류가 발생하면 NSURLErrorDomain
특히 URL 로딩 메커니즘에서 비롯된 것입니다.
당신은 무엇을 할 수 할 것은 프레임 워크에서 생성되는 오류를 캡처하고 도메인 및 일반적인 코드, 같은 가진 새 오류 개체에 포장입니다 kFrameworkErrorCodeUnknown
또는 무언가를 한 다음에 캡처 된 오류를 배치 userInfo
세 이하 NSUnderlyingErrorKey
. CoreData이 많이 (당신이하려고하면, 예를 들어, 수행 ,하지만 당신은 관계 무결성 오류를 가지고, 당신은 하나의 오류 등을 얻을 것이다, 그러나이 특별히 관계가 잘못되는 등의 더 많은 정보 등이 포함됩니다).save:
NSManagedObjectContext
NSUnderlyingErrorKey