बीटीडब्ल्यू, "कोशिश/पकड़" के बारे में उपरोक्त टिप्पणी सच हो सकती है, लेकिन लगभग सभी मामलों में नहीं है। यह इस बात पर निर्भर करता है कि आप अपना समाधान कैसे बनाते हैं। अपने रिलीज बिल्ड में, जितना संभव हो उतना झंडे बंद करें जो दूरी से भी "डीबग" की तरह गंध करता है। रनटाइम को बिल्डिंग के दौरान स्टैक निशान और सामान को याद रखने के लिए कहा गया है, तेज़ "कोशिश/पकड़" बन जाता है।
बीटीडब्ल्यू, # 2: प्रसिद्ध वास्तुशिल्प पैटर्न "बताओ, मत पूछो!" (टीडीए) और "ओपन क्लोज़ सिद्धांत" (ओसीपी) को इस तरह के कुख्यात कोड जैसे "if (! (Fp = fopen (...))" का उपयोग करने से मना कर दिया गया है। वे आपको "उपयोग करने के लिए प्रोत्साहित नहीं करते हैं"/पकड़ो "लेकिन आपको ऐसा करने के लिए मजबूर करता है। क्योंकि ओसीपी न केवल आपके कोड के भीतर पालन करने की मांग करता है बल्कि विदेशी सामान (यानी स्टेडियो जैसे पुस्तकालय) को कॉल करते समय भी।
ओसीपी क्यों अंतिम वाक्य में टीडीए नहीं? आपको मौजूदा कोड के अर्थ को विस्तृत करने की अनुमति नहीं है। सरल "फॉपेन" उदाहरण पर चिपके हुए, परिणाम शून्य होने पर आप क्या करने जा रहे हैं? वास्तव में "फॉपेन" क्यों विफल हुआ? आप गीलेर की जांच कर सकते हैं कि वहां पर्याप्त रिक्त स्थान है बाएं, या यदि फ़ाइल सिस्टम लिखने योग्य है। यदि फ़ाइल का नाम मान्य है या नहीं। फिर भी, आपका लक्ष्य हासिल नहीं किया जा सकता है: फ़ाइल खोलें। एक हेडलेस एप्लिकेशन की कल्पना करें, इसलिए उपयोगकर्ता का कोई हस्तक्षेप संभव नहीं है। अब क्या? क्या आप वहां मौजूद हैं सामान के साथ आगे बढ़ने का कोई कारण नहीं है, क्योंकि "फॉपेन" असफल रहा। आपको फ़ॉलबैक रणनीति की आवश्यकता होगी। डॉट। अगर "फॉपेन" विफल हो गया है, तो यह असफल रहा है।
अंगूठे का नियम: हमेशा के रूप में अपने कोड के बारे में सोचें (केआईएस)।यदि आपका कोड स्वेच्छा से 'असफल' हो सकता है, तो परिणामस्वरूप नियमित रूप से तत्व हो सकते हैं या नहीं, तर्क को कक्षा में डाल दें। शायद आपको विभिन्न वर्गों (टीडीए) में डेटा, गुण, और प्रश्न, और विधियों को वितरित करना होगा। शायद आपको एसएलए के अनुसार अपना कोड समायोजित करना होगा।
आपके मामले में, हालांकि, सुनिश्चित करें कि तत्व मौजूद है। यदि आप नहीं कर सकते हैं, तो यह आपकी गलती नहीं है। अपने कोड में गहराई से डालें (एक रैपर जहां पूर्व कोडर की सभी गलतियों को सुशोभित किया जाता है), किसी अन्य इकाई में आवश्यक डेटा को बदल दें, जैसे आगे "अगर" की आवश्यकता नहीं है।
ए 'try'/'catch' ब्लॉक बहुत धीमा हो सकता है। उन्हें जितना संभव हो से बचा जाना चाहिए। – Enigmativity