โดยส่วนตัวแล้วฉันใช้โดเมนแบบ 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
NSUnderlyingErrorKey
CoreData ไม่นี้มาก (ตัวอย่างเช่นถ้าคุณพยายามที่จะแต่คุณมีข้อผิดพลาดความสมบูรณ์ของความสัมพันธ์ของคุณจะได้รับกลับข้อผิดพลาดเพียงครั้งเดียว แต่จะมีข้อมูลมากขึ้นเช่นเฉพาะซึ่งความสัมพันธ์ที่ผิด ฯลฯ )save:
NSManagedObjectContext
NSUnderlyingErrorKey