दिलचस्प पोस्ट
जावा में अर्रे सूची के कांच और संघ एएसपी.नेट एमवीसी में अपलोड की गई फाइल को कैसे मान्य करें? GetExternalFilesDir और getExternalStorage डायरेक्टरी के बीच अंतर () अमान्य iPhone अनुप्रयोग बाइनरी क्या मैं कुछ उदाहरणों में सिर्फ प्रतिरूपण को बंद कर सकता हूं क्या आईओएस में एक घड़ी है जिसका प्रयोग उपयोगकर्ता द्वारा बदला नहीं जा सकता कैसे अपलोड की गई dropzone.js फ़ाइलों की संख्या को सीमित करें? गो प्रोजेक्ट लेआउट का एक समझदार तरीका क्या है जावास्क्रिप्ट पर ब्राउजर आँकड़े निष्क्रिय क्या टैबबार को छिपाना संभव है जब एक बटन को सामग्री के पूर्ण स्क्रीन दृश्य को अनुमति देने के लिए दबाया जाता है? राज्य मशीन ट्यूटोरियल मैं 500 आंतरिक सर्वर त्रुटि देने के बजाय PHP कैसे त्रुटि प्रदर्शित कर सकता हूं स्विफ्ट टॉक-कैच सिंटैक्स कैसे सी # में integers के अनुक्रम के साथ सरणी बनाने के लिए? एक ScrollView लेआउट के अंदर एक LinearLayout को भरने के लिए ListAdapter का उपयोग करना

कैच ब्लॉकों का उपयोग करने के लिए कब करें

ठीक है, यह एक बहुत नबोला सवाल हो सकता है, लेकिन मुझे लगता है कि उस पर और कई इंटरनेट खोजों पर PHP प्रलेखन ने मुझे इसके बारे में कोई जानकारी नहीं दी है।

मेरे आवेदन को बेहतर बनाने के लिए मुझे कब-पकड़ने वाले ब्लॉकों का उपयोग करना चाहिए?

मैं किसी को यह कहता हूं कि हमें घातक त्रुटियों को रोकने के लिए केवल प्रयास-पकड़ने वाले ब्लॉकों का उपयोग करना चाहिए। मैंने किसी और को यह कहते हुए पढ़ा है कि हमें इसे अनपेक्षित त्रुटियों पर ही प्रयोग करना चाहिए (इंतज़ार करें क्या? अप्रत्याशित? अगर वे अप्रत्याशित त्रुटियां हैं, तो मैं उन्हें कैच से कैसे रोका जा सकता था? क्या मुझे अपने सभी एप्लिकेशन कोड को एक कोशिश ब्लॉक के अंदर रखना चाहिए?)। दूसरों का कहना है कि कोशिश-पकड़ने वाले ब्लॉकों को हर जगह इस्तेमाल किया जाना चाहिए क्योंकि वे भी बढ़ा सकते हैं (अपवाद वर्ग को बढ़ा सकते हैं) अंत में किसी का कहना है कि PHP कोशिश-पकड़ ब्लॉक पूरी तरह से बेकार हैं क्योंकि वे बहुत ही खराब कार्यान्वित हैं। (इस पर मुझे प्रदर्शन के बारे में एक अच्छा सवाल मिला)।

मुझे लगता है कि यह विषय बहुत अजीब और भ्रमित है। क्या कोई मुझे रोका सकता है?

Solutions Collecting From Web of "कैच ब्लॉकों का उपयोग करने के लिए कब करें"

मुझे लगता है कि यह विषय बहुत अजीब और भ्रमित है। क्या कोई मुझे रोका सकता है?

निश्चित रूप से। मैं एक PHP उपयोगकर्ता नहीं हूं, लेकिन एक्शन स्क्रिप्ट, जावा, और जावास्क्रिप्ट में प्रयास / पकड़ के साथ काम करने के बाद मेरे पास थोड़ी सी जानकारी हो सकती है हालांकि ध्यान रखें कि विभिन्न भाषाओं और प्लेटफॉर्म विभिन्न प्रयासों को प्रयास / पकड़ने के लिए प्रोत्साहित करते हैं ने कहा कि…

केवल बार मैं कोशिश / पकड़ का उपयोग करने की सिफारिश करता था अगर आप एक मूल भाषा का उपयोग कर रहे हैं कि समारोह

  1. त्रुटि / अपवाद फेंक सकते हैं
  2. आपको यह पता लगाने में कोई औजार नहीं मिलता है कि क्या आप कुछ बेवकूफ करने वाले हैं जो कि त्रुटि / अपवाद का कारण होगा। उदाहरण: एक्शन स्क्रिप्ट में, एक लोडर बंद करना जो खुले नहीं है, एक त्रुटि का परिणाम देगा, लेकिन लोडर की जांच करने के लिए एक isOpen प्रॉपर्टी नहीं है, इसलिए आप इसे अन्यथा पूरी तरह से अर्थहीन त्रुटि को चुप्पी करने की कोशिश में पकड़ने के लिए मजबूर कर रहे हैं।
  3. त्रुटि / अपवाद वास्तव में व्यर्थ है

आइए उदाहरणों की सूची लेते हैं और देखें कि वे उस सूची के साथ किस प्रकार वर्ग करते हैं।

मैं किसी को यह कहता हूं कि हमें घातक त्रुटियों को रोकने के लिए केवल प्रयास-पकड़ने वाले ब्लॉकों का उपयोग करना चाहिए।

AS के loader.close () फ़ंक्शन के मामले में, यह अच्छी सलाह है यह एक गंभीर त्रुटि है, और सभी एक अन्यथा तुच्छ गलतफहमी से दूसरी ओर, एएस में लगभग सभी त्रुटियां आपके आवेदन को रोकती हैं I क्या आप फिर सब कोशिश / पकड़ने में लपेटेंगे? बिलकुल नहीं! किसी कारण के लिए एक "घातक त्रुटि" घातक है इसका मतलब है कि कुछ गड़बड़ हुआ है और एक संभावित "अपरिभाषित" स्थिति में जारी रखने के लिए आवेदन मूर्खतापूर्ण है किसी त्रुटि के बारे में जानने के लिए बेहतर है और फिर इसे ठीक करने के बजाय इसे ठीक करें

मैंने किसी और को यह कहते हुए पढ़ा कि हमें इसका उपयोग अप्रत्याशित त्रुटियों पर ही करना चाहिए

यह भी बदतर है वे अच्छी तरह से त्रुटियां हैं जो आप चुप नहीं करना चाहते हैं, क्योंकि उन्हें चुप करना मतलब है कि आप उन्हें कभी नहीं ढूंढने जा रहे हैं। शायद आप उन्हें निगल नहीं ले रहे हैं, हालांकि … शायद आप उन्हें प्रवेश कर रहे हैं। लेकिन आप कोशिश क्यों करेंगे / पकड़ / लॉग / जारी रखें, हालांकि कुछ भी नहीं हुआ, प्रोग्राम को संभावित खतरनाक और अप्रत्याशित स्थिति में चलाने की इजाजत दे दी? बस दांतों में आपको त्रुटि लाए और फिर उसे ठीक करें एक प्रोग्राम में किसी चीज को गलत करने की कोशिश करने की तुलना में थोड़ा अधिक निराशा होती है, जो किसी और व्यक्ति ने लिखा है क्योंकि उन्होंने कोशिश / पकड़ ब्लॉक में सब कुछ लपेट कर लॉग इन करने की उपेक्षा की।

दूसरों का कहना है कि कोशिश-पकड़ने वाले ब्लॉकों को हर जगह इस्तेमाल किया जाना चाहिए क्योंकि वे भी बढ़ा सकते हैं (अपवाद वर्ग को बढ़ा सकते हैं)

अगर आप फेंकने वाले हो, तो इस के लिए संभावित योग्यता है, और आप अपने कार्यक्रम में एक असाधारण स्थिति में खुद को सचेत करने की कोशिश कर रहे हैं … लेकिन अपनी फेंक की गलती क्यों कोशिश करें? इसे आपको दांतों में किक करने दें, फिर इसे ठीक करें ताकि आपको गलती को और नहीं फेंकना पड़े।

अंत में किसी का कहना है कि PHP कोशिश-पकड़ ब्लॉक पूरी तरह से बेकार हैं क्योंकि वे बहुत ही खराब कार्यान्वित हैं। (इस पर मैं प्रदर्शन के बारे में एक अच्छा सवाल पूछता है)

संभावित हो। हालांकि मैं इसका जवाब नहीं दे सकता हूं

इसलिए … यह एक धार्मिक प्रश्न का थोड़ा सा हो सकता है, और मैं कुछ लोगों से असहमत हूं, लेकिन मेरे विशेष अनुदान बिंदु से उन सबक हैं जो मैंने कोशिशों / पकड़ने के बारे में वर्षों से सीखा है।

अलग-अलग लोग आपको अलग-अलग बातें बताएंगे। लेकिन यह वही है जो मुझे लगता है, विशेष रूप से एक वेब अनुप्रयोग के मामले में

आपका पूरा पृष्ठ एक प्रयास / पकड़ में होना चाहिए जो उपयोगकर्ता को एक त्रुटि संदेश प्रदर्शित करता है। त्रुटि संदेश को उस उपयोगकर्ता को नहीं बता देना चाहिए जो विस्तार से हुआ था क्योंकि सुरक्षा चिंता का कारण है। यह लॉग फ़ाइल में त्रुटि के बारे में जानकारी रिकॉर्ड करना चाहिए।

दूसरी बात यह है कि मामलों के सामान्य संचालन में कुछ गलत हो सकता है। PHP बहुत अपवाद नहीं है इसलिए यह बहुत ज्यादा नहीं हो सकता है। असल में, यदि आप उस फ़ंक्शन में चलाते हैं जो अपवाद फेंकता है, जब वह विफल हो जाता है, तो आप अपवाद को पकड़ सकते हैं और उस स्थिति में कुछ और कर सकते हैं।

सामान्य तौर पर, आपका प्रश्न यह पूछ रहा है कि आप घर के योग्यता को सुधारने के लिए हथौड़ा का उपयोग कैसे करेंगे। विशिष्ट व्यवहार को लागू करने में आपकी सहायता करने के लिए अपवाद का उपयोग करें अपवादों का उपयोग करने के लिए स्थानों की जांच न करें

मुझे लगता है कि यह वरीयताओं का मामला है, लेकिन मेरे अनुभवों से, मैं आपको उनको जितना संभव हो उतना उपयोग करने के लिए प्रोत्साहित करूंगा।

आवेदन में हम वर्तमान में काम पर (ज़ेंड फ़्रेमवर्क का उपयोग करते समय) विकसित होते हैं, तो हम एक एकल प्रयास का उपयोग करते हैं..उपयोगकर्ता को दिखाए जाने वाले सभी अनुप्रयोगों में सभी अपवादों को पकड़ने के लिए..चुप ब्लॉक का उपयोग करें, उदाहरण के लिए, त्रुटि 500 ​​से और अपवाद अधिक से लॉग होता है डेटाबेस के लिए जानकारी मैं, व्यक्तिगत रूप से, PHP एप्लिकेशन के मामले में इस दृष्टिकोण को पसंद करता हूं क्योंकि अपवाद बढ़ने योग्य हैं और आप मूल रूप से जो भी कार्यक्षमता की आवश्यकता कर सकते हैं उसे लिख सकते हैं।

मैं मुख्य रूप से डेटाबेस कॉल के आसपास की कोशिश / पकड़ो का उपयोग करें … विशेष रूप से इनपुट, अद्यतन और हटाए आदि।

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

मैं उन सभी परिचालनों का भी उपयोग करता हूं जिन पर मेरे पास पूर्ण नियंत्रण नहीं होता जैसे बाहरी या विदेशी डेटा स्रोत से डेटा आयात करना, जहां डेटा के साथ समस्या हो सकती है या स्रोत फ़ाइल तक पहुंच हो सकती है

मुझे लगता है कि "अप्रत्याशित त्रुटियों" से क्या मतलब है, जहां आप अच्छी प्रोग्रामिंग प्रक्रियाओं के माध्यम से समस्याओं को रोक नहीं सकते हैं जैसे कि जाँच करना कि कोई फ़ाइल "इसमें" शामिल करने से पहले मौजूद है, कुछ समस्याएं जो आप अनुमान लगा सकते हैं ताकि उन्हें रोकने के लिए अच्छे व्यवहार का उपयोग करें। उन्हें एक कोशिश / पकड़ने में लपेटकर उन्हें मौका नहीं छोड़ें।

अच्छा प्रोग्रामिंग प्रथाओं का उपयोग करें, जैसा कि आपको हर जगह करना चाहिए। हर चीज के लिए आलसी शॉर्टकट के रूप में प्रयास करें / पकड़ न लें, हर जगह। यह प्रमुख उदरी है

आप हर जगह ब्लॉक को पकड़ने का प्रयास नहीं कर सकते

हालांकि, आवेदन परीक्षण के दौरान उत्पन्न अपवाद आपको उन जगहों पर सतर्क होना चाहिए जहां आपको कैच की आवश्यकता होती है। यह एक कारण है कि आपको आवेदन / कोड का संपूर्ण परीक्षण क्यों चलाना चाहिए?

यदि आप एक जगह देखते हैं जहां आपको लगता है कि आपको इसकी ज़रूरत है, तो मैं इसमें एक डालूंगा।

संपादित करें: ठीक है कि आप उन्हें हर जगह रख सकते हैं, लेकिन आपको कुछ संवेदक की आवश्यकता है ताकि उन्हें अपने कोड में कहां रखा जाए।

मैं आम तौर पर ऐसे कोड में उन क्षेत्रों के आसपास की कोशिश और पकड़ लगाता हूं जिन पर बाहरी ताकतें इस पर अभिनय करती हैं कि मेरा कोई नियंत्रण नहीं है उदाहरण के लिए, बाहरी फाइलों को खोलना और पढ़ना .. आपको कोई नियंत्रण नहीं है कि फ़ाइल के पढ़ने में कुछ बिंदु पर, फ़ाइल दूषित हो जाती है या कुछ और ऐसा होता है जिसे आप फ़ाइल सर्वर डीसी या कुछ जैसी नियंत्रित नहीं कर सकते

मैं @scriptocalypse से सहमत हूँ वास्तव में मैं सिर्फ 2 प्रकार की स्थितियों में PHP में ब्लॉक का उपयोग करने / पकड़ने का उपयोग करता हूं

  1. यदि यह संभव है कि कुछ बाहरी (मेरे कोड के अंदर नहीं) समस्याएं या डीबी त्रुटियां हो सकती हैं:

    • किसी अन्य स्रोत से डेटा प्राप्त करना (जैसे curl )
    • फ़ाइलों से डेटा प्राप्त करना
    • डीबी अपवाद
  2. अगर मैं किसी अन्य सिस्टम के अंदर काम करता हूं, जैसे सीएमएस या समान और मैं एक निश्चित व्यवहार को ओवरराइड करना चाहता हूं। उदाहरण के लिए, मैं नहीं चाहता कि एक अपवाद फेंका जा रहा हो, लेकिन अपवाद संदेशों को देखने में वापस किया जा रहा है।