में अपवाद उपयोग के विपक्ष मैं exception उपयोग और NSError उपयोग पर एप्पल सिफारिश पढ़ें।पेशेवरों और iOS/ObjectiveC
Using exceptions in Objective-C
मैं आईओएस (सच कहूं, मैं एप्पल के वाक्य के साथ कोई संतुष्ट हूँ में विधि से निपटने त्रुटि अधिसूचना के रूप में पेशेवरों और उपयोग अपवाद के विपक्ष यह पता लगाने की कोशिश कर रहा हूँ/(यह कहता है कि क्या करना है, लेकिन यह नहीं कहता कि हमें ऐसा क्यों करना चाहिए):
आपको उपयोग को आरक्षित करना चाहिए प्रोग्रामिंग के लिए अपवादों या अप्रत्याशित रनटाइम त्रुटियों जैसे कि ऑफ-ऑफ-बाउंड संग्रह एक्सेस, अपरिवर्तनीय ऑब्जेक्ट्स को म्यूट करने, अमान्य संदेश भेजने और विंडो सर्वर से कनेक्शन खोने का प्रयास करता है। आप आमतौर पर पर अपवाद के साथ इस तरह की त्रुटियों का ख्याल रखते हैं जब कोई अनुप्रयोग रनटाइम के बजाए बनाया गया है।
अपवाद उपयोग पेशेवरों:
यह त्रुटि पैदा कोड और त्रुटि हैंडलिंग कोड के बीच सभी मध्यवर्ती कोड
यह तर्क को दूषित नहीं करता संशोधित करने और के लिए मान वापस जाने के लिए की आवश्यकता नहीं है तरीकों
विपक्ष:
सभी मैन्युअल रूप से प्रबंधित मेमोरी कोड के लिए हमें अतिरिक्त सावधान रहना होगा (हमें यह सुनिश्चित करने के लिए ऑटोरेलीज़िंग ऑब्जेक्ट्स में लपेटने की आवश्यकता होगी कि संसाधन जारी किए जाएंगे)।
हमें अपने कोड और ढांचे के बीच सीमा से सावधान रहना होगा। यदि हमारे अपवाद हमारे कोड को छोड़ देते हैं, तो हम परेशानी में पड़ सकते हैं (क्योंकि ढांचे मैन्युअल रूप से स्मृति का प्रबंधन कर सकते हैं)
क्या मुझे कुछ याद आया? क्या अतिरिक्त विपक्ष/पेशेवर हैं?
ऐसा लगता है जैसे अपवादों को लाइब्रेरी जैसे कोड के लिए ठीक होना चाहिए (जब हमारे पास कड़े पैक किए गए कोड की बड़ी मात्रा होती है, जो बाहरी सिस्टम/ढांचे के साथ बहुत कुछ संवाद नहीं करती है। और ऐसा लगता है कि अपवाद का उपयोग करना मुश्किल है । कोड जो सक्रिय रूप से अन्य चौखटे के साथ सूचना का आदान प्रदान
अपने अनुभव इस सिद्धांत को साबित करता है
मैं इस विषय पर किसी भी अतिरिक्त जानकारी की सराहना करते हैं
मैं वास्तव में विपक्ष को नहीं देखता हूं। आप इन दो चीजों को वैसे भी करना चाहते हैं, है ना? – Sulthan
मैं कहूंगा, पहले वास्तव में एक कॉन नहीं है। आपको वैसे भी करना है। दूसरा दर्दनाक हो सकता है (जैसा कि मैं समझता हूं कि ObjectiveC (जावा) विकसित करने के लिए एक अच्छा तरीका प्रदान नहीं करता है, यह जानने के लिए कि कुछ विधि फेंक सकती है। इसलिए, सीमा कोड में केवल एक विधि जोड़ना और भूलना आसान है अपवाद को पकड़ने के लिए जिसे इस कोड द्वारा फेंक दिया जा सकता है। –
समस्या यह है कि, हालांकि, आपके कोड और सिस्टम कोड के बीच की सीमा आमतौर पर बेहद जटिल है। यदि आप फाउंडेशन संग्रह कक्षाओं का उपयोग करते हैं, तो उन संग्रहों का हर उपयोग एक सीमा है, उदाहरण के लिए। – bbum