यह बिल्कुल सच नहीं है कि "अभिकर्ता केवल डिबग मोड में विफल रहता है।"
में उन्मुख सॉफ्टवेयर निर्माण, 2 संस्करण वस्तु बर्ट्रेंड मेयेर, लेखक पत्ते एक दरवाजा रिलीज़ मोड में पूर्व शर्त की जाँच के लिए खुला है। उस स्थिति में, जब एक असफलता विफल होती है तो क्या होता है ... एक उल्लंघन उल्लंघन अपवाद उठाया जाता है! इस मामले में, स्थिति से कोई पुनर्प्राप्ति नहीं है: हालांकि कुछ उपयोगी हो सकता है, और यह स्वचालित रूप से एक त्रुटि रिपोर्ट उत्पन्न करने के लिए है और कुछ मामलों में, एप्लिकेशन को पुनरारंभ करने के लिए।
इसके पीछे अभिप्राय यह है कि आमतौर पर पूर्ववर्तियों को आक्रमणकारियों और पोस्टकंडिशन की तुलना में परीक्षण करने के लिए सस्ता किया जाता है, और यह कि कुछ मामलों में रिलीज बिल्ड में शुद्धता और "सुरक्षा" गति से अधिक महत्वपूर्ण हैं। यानी कई अनुप्रयोगों के लिए गति कोई मुद्दा नहीं है, लेकिन मजबूती (प्रोग्राम का सुरक्षित तरीके से व्यवहार करने की क्षमता जब इसका व्यवहार सही नहीं है, यानी जब अनुबंध टूट जाता है)।
क्या आपको हमेशा पूर्वधारणा जाँच सक्षम छोड़ देनी चाहिए? निर्भर करता है। यह आप पर निर्भर करता है। कोई सार्वभौमिक जवाब नहीं है। यदि आप बैंक के लिए सॉफ़्टवेयर बना रहे हैं, तो बेहतर हो सकता है कि 1,000 डॉलर के बदले $ 1,000,000 को स्थानांतरित करने के लिए खतरनाक संदेश के साथ निष्पादन को बाधित करें। लेकिन क्या होगा अगर आप एक गेम की प्रोग्रामिंग कर रहे हैं? हो सकता है कि आपको वह सभी गति चाहिए जो आपको मिल सकती है, और अगर किसी को बग के कारण 10 के बजाय 1000 अंक मिलते हैं, तो प्रीन्डॉन्डिशन को पकड़ नहीं पाया (क्योंकि वे सक्षम नहीं हैं), कठिन भाग्य।
दोनों मामलों में आपको आदर्श रूप से परीक्षण के दौरान उस बग को पकड़ना चाहिए, और आपको अपने परीक्षण का एक महत्वपूर्ण हिस्सा सक्षम होना चाहिए। यहां चर्चा की जा रही है कि उन दुर्लभ मामलों के लिए सबसे अच्छी नीति क्या है, जिसमें पूर्व-निर्माण ऐसे परिदृश्य में उत्पादन कोड में विफल हो जाते हैं, जो अपूर्ण परीक्षण के कारण पहले नहीं पाया गया था।
संक्षेप में, आपके पास दावे हो सकते हैं और फिर भी अपवाद स्वतः प्राप्त हो सकते हैं , यदि आप उन्हें सक्षम करते हैं - कम से कम एफिल में। मुझे लगता है कि सी ++ में भी ऐसा ही करने की जरूरत है।
यह भी देखें: अभिकथन को उत्पादन कोड में कब रहना चाहिए?