मैं व्यक्तिगत रूप से रिवर्स-डीएनएस स्टाइल डोमेन का उपयोग करता हूं। उदाहरण के लिए:
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
जाएगी , लेकिन इसमें बहुत अधिक जानकारी होगी, जैसे विशेष रूप से कौन से रिश्ते गलत हैं, आदि)।