2010-03-30 14 views
11

हम आईफोन डेवलपर्स के लिए एक एपीआई लिख रहे हैं और हम नहीं जानते कि अपवाद हैंडलिंग के लिए सबसे अच्छा अभ्यास क्या है। हमने NSError, मानक पॉज़िक्स मार्ग, NSExceptionआईफोन के लिए एपीआई लिखते समय त्रुटि प्रबंधन के लिए सर्वोत्तम प्रथाएं क्या हैं?

अधिकांश एपीआई का उपयोग करने वाला सम्मेलन क्या है? सबसे अधिक "उद्देश्य-सी अनुकूल" कौन सा है?

+0

यह प्रश्न http://stackoverflow.com/questions/1503348/returning-errors-in-objective-c और http://stackoverflow.com/questions/2169728/how-should-i- का डुप्लिकेट हो सकता है। संभाल-त्रुटियों में एक-api –

उत्तर

14
से

Introduction to Exception Programming Topics:

महत्वपूर्ण: आप इस तरह के आउट-ऑफ-सीमा संग्रह का उपयोग के रूप में प्रोग्रामिंग या अप्रत्याशित क्रम त्रुटियों के लिए अपवाद के उपयोग को आरक्षित करना चाहिए, अपरिवर्तनीय वस्तुओं उत्परिवर्तित करने का प्रयास गलत भेजने संदेश, और विंडो सर्वर से कनेक्शन खोना। जब आप रनटाइम के बजाए कोई एप्लिकेशन बनाया जा रहा है तो आप आम तौर पर त्रुटियों के साथ इन प्रकार की त्रुटियों का ख्याल रखते हैं।

...

अपवाद के बजाय

, त्रुटि वस्तुओं (NSError) और कोको त्रुटि वितरण प्रणाली कोको अनुप्रयोगों में उम्मीद त्रुटियों से संवाद करने की सिफारिश की तरीका है। अधिक जानकारी के लिए, Error Handling Programming Guide For Cocoa देखें।

तो जैसा कि मैं इसे समझता हूं, केवल कुछ गलत होने पर अपवादों का उपयोग करें। अन्यथा, NSError ऑब्जेक्ट्स का उपयोग करें।

2

NSError के लिए +1।

मैं भूल जाता हूं कि ऐप्पल दस्तावेज़ों में मैंने इसे कहाँ पढ़ा है, लेकिन मैं उन्हें "पहले कोशिश करें, फिर त्रुटियों की जांच करें" के कोडिंग दर्शन को प्रोत्साहित करता हूं, "वैधता की जांच करें, फिर ऑपरेशन करें।" उदाहरण के लिए, यह देखने के बजाय कि नेटवर्क इसका उपयोग करने से पहले उपलब्ध है या नहीं, बस इसका उपयोग करने का प्रयास करें और अगर आपको एक बार वापस मिल जाए तो त्रुटि का जवाब दें।

मैं इस दर्शन के साथ कई प्रयोग मामलों के लिए सहमत हूं क्योंकि (ए) यह कार्यवाही के समय वैधता-जांच को चलाता है, इसलिए एक अर्थ में यह अधिक सटीक है, और (बी, व्यक्तिपरक) कोड के साथ काम करना अधिक मजेदार है यह पैटर्न

संक्षेप में, सुझाव NSError उपयोग करने के लिए, और अपने एपीआई-प्रयोक्ताओं के लिए अधिक अनुकूल होने के लिए NSError** पैरामीटर NULL स्वीकार करते हैं, के साथ तत्काल प्रतिक्रिया प्रदान करने के लिए है! कोको/टच में कई जगहों पर यह पैटर्न भी स्थापित किया गया है; उदाहरण के लिए NSString विधि writeToFile:atomically:encoding:error:

संबंधित मुद्दे

 संबंधित मुद्दे