โดยส่วนตัวแล้วฉันใช้โดเมนแบบ reverse-DNS ตัวอย่างเช่น:
NSError * myInternalError = [NSError errorWithDomain:@"com.davedelong.myproject" code:42 userInfo:someUserInfo];
ส่วนที่สามของโดเมน ( @"myproject") ใช้เพื่อแยกความแตกต่างของข้อผิดพลาดจากโปรเจ็กต์นี้ ( "My Project") จากข้อผิดพลาดในโปรเจ็กต์อื่น ( "My Other Project"=> com.davedelong.myotherproject)
เป็นวิธีง่ายๆในการตรวจสอบให้แน่ใจว่าฉันจะไม่ขัดแย้งกับโดเมนข้อผิดพลาดของใครอื่น (ถ้าฉันใช้รหัสของบุคคลที่สาม) เว้นแต่ว่านักพัฒนาจะตั้งใจที่จะยุ่งกับฉันเพียงคนเดียว (ซึ่งฉันเชื่อว่าไม่น่าเป็นไปได้สูง .. )
สำหรับความขัดแย้งในการกำหนดหมายเลขรหัสไม่ต้องกังวลเรื่องนั้น ตราบใดที่รหัสไม่ซ้ำกันภายในโดเมนคุณก็จะโอเค
ส่วนข้อผิดพลาดในการแปลนั้นขึ้นอยู่กับคุณ ไม่ว่าคุณจะทำอะไรก็ตามอย่าลืมจัดทำเอกสารให้ดี โดยส่วนตัวแล้วฉันมักจะส่งต่อข้อผิดพลาดที่สร้างเฟรมเวิร์กตามที่พวกเขามาถึงฉันเนื่องจากฉันไม่แน่ใจเลยว่าฉันจะจัดการรหัสทั้งหมดและแปล userInfo ทั้งหมดให้เป็นสิ่งที่เฉพาะเจาะจงมากขึ้นสำหรับโครงการของฉัน เฟรมเวิร์กสามารถเปลี่ยนแปลงและเพิ่มโค้ดได้มากขึ้นหรือเปลี่ยนความหมายของโค้ดที่มีอยู่เป็นต้นนอกจากนี้ยังช่วยให้ฉันระบุได้ชัดเจนขึ้นว่าข้อผิดพลาดมาจากไหน ตัวอย่างเช่นถ้าเฟรมเวิร์กStackKitของฉันสร้างข้อผิดพลาดในcom.stackkitโดเมนฉันรู้ว่ามันเป็นปัญหาของเฟรมเวิร์ก อย่างไรก็ตามหากเกิดข้อผิดพลาดขึ้นNSURLErrorDomainฉันก็รู้ว่ามันมาจากกลไกการโหลด URL โดยเฉพาะ
สิ่งที่คุณจะทำคือการจับข้อผิดพลาดที่สร้างกรอบและห่อไว้ในวัตถุข้อผิดพลาดใหม่ที่มีประสิทธิภาพและรหัสทั่วไปของคุณสิ่งที่ชอบkFrameworkErrorCodeUnknownหรือสิ่งที่แล้ววางข้อผิดพลาดถูกจับในภายใต้userInfo NSUnderlyingErrorKeyCoreData ไม่นี้มาก (ตัวอย่างเช่นถ้าคุณพยายามที่จะแต่คุณมีข้อผิดพลาดความสมบูรณ์ของความสัมพันธ์ของคุณจะได้รับกลับข้อผิดพลาดเพียงครั้งเดียว แต่จะมีข้อมูลมากขึ้นเช่นเฉพาะซึ่งความสัมพันธ์ที่ผิด ฯลฯ )save:NSManagedObjectContextNSUnderlyingErrorKey