उन्नत पायथन विकास पाठ्यक्रम
अध्याय
>
स्तर

अपवाद प्रबंधन
अपवाद वर्गों को अनुकूलित करना

उद्देश्य

एकत्रित वर्षा जल का सत्यापन करें और सुनिश्चित करें कि इसे सही ढंग से प्रक्रिया और स्थानांतरित किया जा रहा है, इसके लिए कस्टम अपवाद कक्षाओं को अनुकूलित करें।

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

कोड एडिटर में दो कस्टम अपवाद कक्षाएं सेटअप की गई हैं, इनका उपयोग करना आपके लिए आवश्यक होगा ताकि आप किसी भी मशीनरी समस्या का समाधान कर सकें। पहला अपवाद पानी के दबाव को हल करने के लिए है। इसे वाल्व के साथ उपयोग करने के लिए बनाया गया है ताकि सुनिश्चित किया जा सके कि पानी परिसर में ठीक से प्रवाहित हो रहा है या यदि दबाव को समायोजित करने की आवश्यकता है। यदि दबाव 100 से कम या 300 से अधिक है तो अपवाद द्वारा एक अलग कार्रवाई की जाती है, दबाव एक तर्क है जिसे उपयोगकर्ता को प्रदान करना होगा। एक बार ट्रिगर होने पर एक कस्टम पॉप अप में एक त्रुटि कोड और संदेश प्रदर्शित होता है।

class PressureError(Exception): def __init__(self, pressure, message="Water pressure is offset, pressure is: ", error_code=404): self.pressure = pressure self.message = message self.error_code = error_code super().__init__(self.message) async def eval(self): await player.display("[Error: %s {%s %s}]" % (self.error_code , self.message, self.pressure)) if self.pressure < 100: return ("Valve has been closed") if self.pressure > 360: return ("Valve has been opened")

दूसरी कस्टम अपवाद कक्षा वाटर हीटरों में तापमान को मॉड्यूलेट करने के लिए है, यदि तापमान बहुत कम या बहुत अधिक होता है तो आपको त्रुटि को सही करने के लिए एक नया तापमान तर्क के रूप में दर्ज करना होगा।

class TemperatureError(Exception): def __init__(self, temp, message="Temperature is not appropiate, enter new temperature: ", error_code=808): self.temp = temp self.message = message self.error_code = error_code super().__init__(self.message) async def eval(self): await player.display("[Error: %s {%s %s}]" % (self.error_code , self.message, self.temp)) return ("Temperature Corrected")

शुरुआत करने के लिए, हरे कालीन पर स्थित हल्के X मार्क के पास चलें और उस टैंक का सामना करें जिसमें वाल्व लगा है, ये चार (4) वाल्व हैं जो टैंक में पंप किए जा रहे पानी के दबाव को नियंत्रित कर रहे हैं। चार (4) परिवर्तनीय स्थिरांक हैं: green_pressure, red_pressure, blue_pressure और orange_pressure, जो संबंधित रंगीन कालीनों के प्रत्येक टैंक के दबाव को संग्रहित करते हैं।

सभी हल्के X मार्क पर, try/except और else कोड ब्लॉक अनुक्रम का उपयोग करते हुए सत्यापित करें कि प्रत्येक टैंक में दबाव उपयुक्त है या नहीं। यदि दबाव 100 से कम है या यदि यह 300 से अधिक है तो कस्टम PressureError अपवाद को उठाएं और दबाव को तर्क के रूप में जोड़ें। यदि सक्रिय होता है तो यह त्रुटि कोड उठाएगा और सुधार करेगा, अन्यथा else खंड सक्रिय होकर पुष्टि करेगा कि टैंक में दबाव उपयुक्त है। उदाहरण के लिए:

try: if green_pressure < 100 or green_pressure > 360: raise PressureError(green_pressure) except PressureError as x: error = await x.eval() player.speak(error) else: player.speak( "Pressure is appropriate" )

यह सभी हल्के X मार्क पर करें, उन परिवर्तनीय स्थिरांकों का उपयोग करते हुए जो संबंधित रंगीन कालीनों से मेल खाते हैं, और आवश्यकता होने पर दबाव वाल्व की जांच या समायोजन करें।

काम पूरा करने के बाद, सुनहरे X मार्क पर जाएँ और open() फ़ंक्शन का उपयोग करके वाटर हीटर वाले स्टोररूम तक पहुँचें, एक बार अंदर पहुँचने के बाद, स्टोररूम के अंदर स्थित सुनहरे X मार्क के पास जाएँ और काउंटर पर लगे मेमो को पढ़ने के लिए read() फ़ंक्शन का उपयोग करें। यह मेमो आपको प्रत्येक वाटर हीटर के लिए आदर्श तापमान की जानकारी प्रदान करेगा।

एक बार जब आपके पास प्रत्येक तापमान की जानकारी हो जाए, गहरे बैंगनी कालीन पर स्थित डार्क X मार्क की ओर जाएँ, यहाँ हम try/except और else कोड अनुक्रम का उपयोग करते हुए सत्यापित करेंगे कि वाटर हीटर सही तापमान पर हैं या नहीं। चार (4) और परिवर्तनीय स्थिरांक संबंधित हैं: purple_temperature, yellow_temperature, pink_temperature और white_temperature

इस अनुक्रम में हम सत्यापित करेंगे कि यदि तापमान 100 से कम है, तो हम TemperatureError अपवाद उठाएंगे। एक कस्टम अपवाद के रूप में, यह एक तर्क लेता है, इस मामले में आपको मेमो में पढ़ा गया तापमान दर्ज करना होगा ताकि अपवाद की काउंटरमेज़र सावधानी सही ढंग से क्रियान्वित हो सके। उदाहरण के लिए:

try: if purple_temperature < 100: raise TemperatureError(120) except TemperatureError as x: error = await x.eval() player.speak(error) else: player.speak( "Temperature is ok" )

सभी वाटर हीटरों के लिए ऐसा करें, प्रत्येक X मार्क पर जब हीटरों का सामना करते हुए, संबंधित रंगीन कालीनों से मेल खाते परिवर्तनीय स्थिरांकों का उपयोग करते हुए अनुक्रम को क्रियान्वित करें ताकि स्तर पूरा हो सके।

कोड बुक