सर्वोत्तम अपवाद हैंडलिंग प्रथाएं या सिफारिशें? [बन्द है]


12

मुझे लगता है कि मेरे कार्यक्रमों के साथ दो मुख्य समस्याएं मेरी कोड संरचना / संगठन और मेरी त्रुटि हैंडलिंग हैं। मैं कोड पूरा 2 पढ़ रहा हूं, लेकिन मुझे संभावित समस्याओं के साथ काम करने के लिए कुछ पढ़ने की जरूरत है।

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

मुझे पता है कि यह एक व्यापक विषय है जिसका उत्तर यहां एक भी उत्तर में नहीं दिया जा सकता है, इसलिए मैं जो खोज रहा हूं वह एक ऐसी पुस्तक या संसाधन है जिसे आमतौर पर उचित अपवाद अभ्यास अभ्यास सिखाने के रूप में स्वीकार किया जाता है।


1
आप किस भाषा और विकास मंच का उपयोग कर रहे हैं?
यूसुबोव

1
मुझे लगता है कि "क्लीन कोड" में इस समस्या के बारे में एक अच्छा अध्याय है
Hoàng Long

@ इलियुसुबोव ने क्या कहा। जिस भाषा / मंच के साथ आप व्यवहार कर रहे हैं उसका कार्यान्वयन विवरण और मानक सर्वोत्तम प्रथाओं पर बहुत अधिक बोलबाला है।
विन्गंड्रोइड

जवाबों:


12

याद रखने वाली अच्छी चीजों में से एक अपवाद हैंडलिंग है when there is a need

.NET डेवलपमेंट प्लेटफ़ॉर्म के लिए बस MSDN दिशानिर्देशों का पालन करें - अपवादों को संभालने के लिए सर्वोत्तम अभ्यास , साथ ही साथ इस अच्छे कोड-प्रोजेक्ट लेख की जाँच करें - .NET में सर्वोत्तम प्रथाओं को संभालने वाले अपवाद

हालाँकि, निम्नलिखित दिशानिर्देश किसी भी विकास मंच के लिए अधिकतर सही हैं:

  • अपवादों के साथ व्यावसायिक तर्क का प्रबंधन न करें। इसके बजाय सशर्त बयानों का उपयोग करें। यदि नियंत्रण को इफ-स्टेटमेंट के साथ स्पष्ट रूप से किया जा सकता है, तो अपवादों का उपयोग न करें क्योंकि यह पठनीयता और प्रदर्शन को कम कर देता है (जैसे शून्य नियंत्रण, शून्य नियंत्रण से विभाजित)। ।

  • अपवाद के कारणों को बताते हुए अपवाद नाम स्पष्ट और सार्थक होना चाहिए।

  • एक विधि को लागू करते समय त्रुटि की स्थिति के लिए अपवादों को फेंक दें। जैसे अगर आप FileNotFoundException के बजाय -1, -2, -3 आदि मान लौटाते हैं, तो उस तरीके को समझा नहीं जा सकता है।

  • शीर्ष अपवाद वर्ग के बजाय विशिष्ट अपवादों को पकड़ें। यह अतिरिक्त प्रदर्शन, पठनीयता और अधिक विशिष्ट अपवाद हैंडलिंग लाएगा।

  • सशर्त के साथ अशक्त नियंत्रण NullPointerException को पकड़ने का विकल्प नहीं है। यदि कोई विधि शून्य हो सकती है, तो इसे if-else कथन के साथ नियंत्रित करें। यदि कोई रिटर्न NullPointerException को फेंक सकता है, तो उसे पकड़ लें।

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

  • वर्तमान अपवाद कक्षा (जैसे UserException, SystemException और उनके उप प्रकार) का विस्तार करके अपने स्वयं के अपवाद पदानुक्रम को परिभाषित करें और उनका उपयोग करें। ऐसा करके आप अपने अपवादों को विशेषज्ञ बना सकते हैं और अपवादों के पुन: प्रयोज्य मॉड्यूल / परत को परिभाषित कर सकते हैं। इस लिंक में और अधिक पालन करें


2
कुछ अच्छे सामान्य बिंदु, हालांकि मुझे नहीं लगता कि आपका 5 वां अंक ("सशर्त के साथ अशक्त नियंत्रण ...") बहुत स्पष्ट है।
विन्गंड्रोइड

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.