Follow Us
माध्यम चुनें / Select Medium:
Eng (English) Hindi (हिन्दी)
ICSE • कक्षा XII • Computer Science • अध्याय 9
अनुमानित समय: 90 मिनट
प्रगति: अध्ययनरत

तरीकों (Methods)

सीआईएससीई कक्षा 12 कंप्यूटर विज्ञान में, "पायथन में अपवाद हैंडलिंग" लचीला, दोष-सहिष्णु सॉफ्टवेयर के निर्माण पर एक विस्तृत मास्टर संसाधन प्रदान करता है। इस अध्याय में सिंटैक्स बनाम रनटाइम अपवाद, पूर्ण पायथन अपवाद पदानुक्रम (`BaseException` से `Exception`), `try`, `except`, `else` और `finally` ब्लॉक का उपयोग करके संरचित हैंडलिंग, `raise` के माध्यम से कस्टम अपवाद बढ़ाना, उपयोगकर्ता-परिभाषित अपवाद वर्गों को परिभाषित करना, रक्षात्मक प्रोग्रामिंग के लिए `assert` कथन और इसके साथ संरेखित संसाधन सफाई यांत्रिकी को शामिल किया गया है। 2026-27 सीआईएससीई/आईएससी पाठ्यक्रम।

शून्य द्वारा एक एकल प्रभाग पूरे अस्पताल या बैंकिंग प्रणाली को क्यों नष्ट कर सकता है?

1997 में, निर्देशित मिसाइल क्रूजर यूएसएस यॉर्कटाउन को अटलांटिक महासागर में पूर्ण प्रणोदन और नेटवर्क विफलता का सामना करना पड़ा, जिससे पूरा युद्धपोत एक बहती स्टील डेडवेट में बदल गया। इसका कारण दुश्मन की टारपीडो या हार्डवेयर आग नहीं थी; यह एक एकल नाविक था जो विंडोज़ टर्मिनल पर एक इनपुट फ़ील्ड में शून्य टाइप कर रहा था, जिससे एक अनियंत्रित "डिवीजन बाय ज़ीरो" अंकगणितीय अपवाद शुरू हो गया जो नियंत्रण सॉफ़्टवेयर के माध्यम से कैस्केड हो गया, जिससे प्रत्येक कनेक्टेड सिस्टम क्रैश हो गया। पेशेवर प्रोग्रामिंग में, त्रुटियाँ दुर्घटनाएँ नहीं हैं - वे अपरिहार्य वास्तविक दुनिया की घटनाएँ हैं। डिस्क भर जाती है, नेटवर्क कनेक्शन बंद हो जाते हैं, और उपयोगकर्ता संख्या फ़ील्ड में टेक्स्ट टाइप करते हैं। सॉफ़्टवेयर इंजीनियर कैसे कोड लिखते हैं जो त्रुटियों को शानदार ढंग से पकड़ता है, खुले डेटाबेस कनेक्शन को साफ़ करता है, और महत्वपूर्ण सिस्टम को क्रैश किए बिना 24/7 चालू रखता है? यह अध्याय आधुनिक अपवाद प्रबंधन में महारत हासिल करता है।

यह अध्याय क्यों महत्वपूर्ण है

सही परिस्थितियों में काम करने वाला कोड लिखना आसान है; कोड लिखना जो अप्रत्याशित वास्तविक दुनिया की विफलताओं से खूबसूरती से उबरता है, एक पेशेवर सॉफ्टवेयर इंजीनियर की परिभाषित पहचान है। वाणिज्यिक उत्पादन प्रणालियों में, एक हैंडल न किया गया अपवाद एप्लिकेशन डाउनटाइम, वित्तीय लेनदेन विफलता और सुरक्षा कमजोरियों का कारण बनता है। `try-except-else-finally` ब्लॉक जीवनचक्र में महारत हासिल करने से यह सुनिश्चित होता है कि फ़ाइलें और डेटाबेस कनेक्शन हमेशा सुरक्षित रूप से बंद रहते हैं, कस्टम व्यवसाय नियम उपयोगकर्ता-परिभाषित अपवादों के माध्यम से लागू होते हैं, और सॉफ़्टवेयर मिशन-महत्वपूर्ण वातावरण में रॉक-सॉलिड रहता है।

अध्ययन से पूर्व (आवश्यक ज्ञान)

  • मौलिक पायथन सिंटैक्स, फ़ंक्शंस और मानक I/O.
  • नियंत्रण और सशर्त शाखा के प्रवाह का ज्ञान।
  • मानक रनटाइम त्रुटियों से परिचित कक्षा 11 (`ValueError`, `TypeError`, `IndexError`) से।

इस अध्याय के लक्ष्य

  • संकलन-समय/सिंटैक्स त्रुटियों, रनटाइम अपवादों और तार्किक बगों के बीच अंतर करें।
  • मानक पायथन अपवाद पदानुक्रम को `BaseException` से नीचे विशिष्ट अंतर्निहित उपवर्गों तक ट्रेस करें।
  • मजबूत निर्माण करें `try`, एकाधिक `except` हैंडलर, `else`, और `finally` का उपयोग करके अपवाद-हैंडलिंग ब्लॉक।
  • `return`, `break`, या अनचाहे अपवाद होने पर भी `finally` ब्लॉक की निष्पादन गारंटी का विश्लेषण करें।
  • `raise` कीवर्ड का उपयोग करके अंतर्निहित और उपयोगकर्ता-परिभाषित कस्टम अपवाद बढ़ाएं।
  • `assert` कथन का उपयोग करके रक्षात्मक सत्यापन लागू करें और `AssertionError` को संभालें।
  • पाइथन के अंतर्निहित `Exception` सुपरक्लास से विरासत में प्राप्त करके कस्टम एप्लिकेशन अपवाद कक्षाएं बनाएं।

अध्याय रूपरेखा एवं प्रगति

1 1। त्रुटियाँ बनाम अपवाद और पायथन अप...
2 2. संपूर्ण `try-except-else-finally...
3 3. अपवाद उठाना और `assert` कथन
4 4. इंजीनियरिंग कस्टम उपयोगकर्ता-परि...

सम्पूर्ण सैद्धांतिक एवं वैचारिक अध्ययन

1। त्रुटियाँ बनाम अपवाद और पायथन अपवाद पदानुक्रम

समझें

सॉफ़्टवेयर विकास में, असामान्य निष्पादन घटनाओं को दो श्रेणियों में विभाजित किया गया है:

  • सिंटैक्स त्रुटियां (पार्सिंग त्रुटियां): पायथन के औपचारिक व्याकरण का उल्लंघन (उदाहरण के लिए, लापता कोलन, बेमेल कोष्ठक, अमान्य इंडेंटेशन)। प्रोग्राम निष्पादन से *पहले* टोकननाइज़र/पार्सर द्वारा पकड़ा गया। निष्पादन तब तक शुरू नहीं हो सकता जब तक कि सभी सिंटैक्स त्रुटियाँ हल नहीं हो जातीं।
  • अपवाद (रनटाइम त्रुटियाँ): विघटनकारी घटनाएँ जो प्रोग्राम निष्पादन के दौरान *घटित होती हैं जब वाक्यात्मक रूप से मान्य कोड एक अवैध ऑपरेशन का प्रयास करता है (उदाहरण के लिए, शून्य से विभाजित करना, एक गैर-मौजूद फ़ाइल को खोलना, एक खाली सूची को अनुक्रमित करना)। यदि अपवाद हैंडलर द्वारा नहीं पकड़ा जाता है, तो पायथन दुभाषिया निष्पादन रोक देता है और डायग्नोस्टिक Traceback.
  • प्रिंट करता है
पायथन अंतर्निहित अपवाद पदानुक्रम

सभी पायथन अपवाद BaseException:

पर आधारित एक सख्त ऑब्जेक्ट-ओरिएंटेड इनहेरिटेंस ट्री में आयोजित कक्षाएं हैं
बेसएक्सेप्शन
 ├── SystemExit (sys.exit() द्वारा ट्रिगर)
 ├──कीबोर्डइंटरप्ट (टर्मिनल में Ctrl+C द्वारा ट्रिगर)
 └── अपवाद (सभी गैर-घातक एप्लिकेशन अपवादों के लिए रूट सुपरक्लास)
      ├── अंकगणित त्रुटि
      │ ├── ZeroDivisionError (जैसे, 10/0)
      │ └── अतिप्रवाह त्रुटि (गणना फ़्लोटिंग-पॉइंट सीमा से अधिक है)
      ├── लुकअप एरर
      │ ├── IndexError (अनुक्रम सूचकांक सीमा से बाहर)
      │ └── कुंजी त्रुटि (शब्दकोश कुंजी नहीं मिली)
      ├── वैल्यूएरर (सही प्रकार, लेकिन अमान्य मान, उदाहरण के लिए, int("abc"))
      ├── लेखन त्रुटि (ऑपरेशन अनुपयुक्त डेटा प्रकार पर लागू)
      ├── NameError (पहचानकर्ता किसी भी LEGB दायरे में नहीं मिला)
      └── OSError
           ├── FileNotFoundError (फ़ाइल पथ मौजूद नहीं है)
           └── PermissionError (अपर्याप्त OS फ़ाइल एक्सेस अधिकार)

2. संपूर्ण `try-except-else-finally` जीवनचक्र

समझें और गहराई से गोता लगाएं

पायथन रनटाइम अपवादों का अनुमान लगाने और उन्हें खूबसूरती से संभालने के लिए 4-क्लॉज संरचित तंत्र प्रदान करता है:

कोशिश करें:
    # 1. महत्वपूर्ण कोड जो अपवाद उत्पन्न कर सकता है
    संख्या = int(इनपुट('अंश दर्ज करें:'))
    den = int(इनपुट('हर दर्ज करें:'))
    परिणाम = संख्या/डेन
zde के रूप में ZeroDivisionError को छोड़कर:
    #2. विशेष रूप से शून्य से विभाजन को संभालता है
    प्रिंट(f"गणित त्रुटि: शून्य से विभाजित नहीं किया जा सकता! ({zde})")
वैल्यूएरर को छोड़कर ve:
    # 3. अमान्य अल्फ़ान्यूमेरिक रूपांतरण को संभालता है
    प्रिंट(f"इनपुट त्रुटि: कृपया केवल वैध पूर्णांक अंक दर्ज करें! ({ve})")
ई के रूप में अपवाद को छोड़कर:
    # 4. किसी अन्य अप्रत्याशित अपवाद उपवर्ग के लिए फ़ॉलबैक हैंडलर
    प्रिंट(f"अप्रत्याशित त्रुटि उत्पन्न हुई: {type(e).name} - {e}")
अन्य:
    # 5. केवल तभी निष्पादित होता है जब प्रयास ब्लॉक शून्य अपवादों के साथ पूरा हो जाता है!
    प्रिंट(f"सफलता! गणना परिणाम = {परिणाम:.4f}")
अंततः:
    # 6. गारंटीकृत निष्पादन! हमेशा चलता रहता है, चाहे कोई त्रुटि हुई हो या नहीं!
    प्रिंट करें('क्लीनअप: गणना लेनदेन पूरा हो गया। लॉक जारी किया जा रहा है।')
द `finally` ब्लॉक गारंटी

`finally` खंड संसाधन प्रबंधन (फ़ाइलों को बंद करना, डेटाबेस लॉक जारी करना, नेटवर्क सॉकेट को समाप्त करना) के लिए महत्वपूर्ण है। यह all शर्तों के तहत निष्पादित होता है - भले ही `try` ब्लॉक अचानक `return`, `break` निष्पादित करता हो, या एक अनियंत्रित घातक त्रुटि उत्पन्न करता हो!

3. अपवाद उठाना और `assert` कथन

समझें
ए. `raise` कथन

जब प्रोग्राम लॉजिक `raise` कीवर्ड का उपयोग करके एक अवैध व्यापार स्थिति का पता लगाता है तो आप जानबूझकर एक अपवाद ट्रिगर कर सकते हैं:

def निकासी_पैसा(शेष राशि, राशि):
    यदि राशि <= 0:
        raise ValueError("Withdrawal amount must be strictly positive!")
    if amount > शेष:
        मान बढ़ाएँत्रुटि(f"अपर्याप्त धनराशि! अनुरोधित {राशि}, उपलब्ध {शेष राशि}")
    वापसी शेष - राशि
बी. `assert`
के साथ रक्षात्मक प्रोग्रामिंग

`assert condition, "Error Message"` कथन एक आंतरिक निदान धारणा का परीक्षण करता है। यदि स्थिति `False` है, तो पायथन तुरंत AssertionError:

उठाता है
def कैलकुलेट_छूट(कीमत, छूट_प्रतिशत):
    जोर 0 <= discount_percent <= 100, "Discount percentage must be between 0 and 100!"
    return price * (1 - discount_percent / 100)

4. इंजीनियरिंग कस्टम उपयोगकर्ता-परिभाषित अपवाद

समझें और एंटरप्राइज डिज़ाइन

एंटरप्राइज़ सॉफ़्टवेयर इंजीनियरिंग में, `ValueError` जैसे मानक अंतर्निहित अपवाद विशिष्ट व्यावसायिक डोमेन विफलताओं का वर्णन करने के लिए बहुत सामान्य हैं। आप एक नए वर्ग को परिभाषित करके कस्टम अपवाद बनाते हैं जो सीधे पायथन के अंतर्निहित Exception वर्ग से प्राप्त होता है:

# 1. अपवाद से प्राप्त कस्टम डोमेन अपवादों को परिभाषित करें:
वर्ग अमान्य आयु त्रुटि (अपवाद):
    """जब आवेदक की उम्र कानूनी सीमा से बाहर हो तो बढ़ा दी जाती है।"""
    पास

क्लास अंडरएजवोटिंग एरर (अमान्यएज एरर):
    """जब कोई नागरिक 18 वर्ष से कम आयु में मतदान करने का प्रयास करता है तो उठाया जाता है।"""
    def init(स्वयं, आयु, संदेश = "नागरिक मतदान की कानूनी आयु (18) से कम है।"):
        स्व.उम्र = उम्र
        self.message = f"{message} वर्तमान आयु: {उम्र}"
        सुपर().init(self.message)

# 2. व्यावसायिक तर्क में कस्टम अपवाद का उपयोग करें:
डीईएफ़ कास्ट_वोट(नागरिक_नाम, आयु):
    यदि आयु < 0 or age > 120:
        InvalidAgeError बढ़ाएँ(f"बेतुकी उम्र दर्ज की गई: {उम्र}")
    यदि आयु < 18:
        raise UnderageVotingError(age)
    print(f"Vote successfully recorded for {citizen_name}!")

try:
    cast_vote("Rohan", 16)
except UnderageVotingError as uve:
    print(f"Election Commission Alert: {uve}")

प्रोग्रामिंग सिंटेक्स, स्टेटमेंट्स एवं भाषा अनुवादक नियम

अपवाद प्रबंधन प्रवाह
$$\text{try} \to (\text{except} \lor \text{else}) \to \text{finally}$$
संरचित पायथन अपवाद ब्लॉकों का विहित निष्पादन जीवनचक्र।
पुष्टि सत्यापन कानून
$$\text{assert } P, M \iff \text{if not } P: \text{raise AssertionError}(M)$$
अभिकथन कथन की सटीक तुल्यता।
उत्तर वास्तुकला
$$Concept \to Evidence \to Application \to Evaluation$$
अध्याय सिद्धांत का उपयोग करें, कामकाज या सबूत दिखाएं, और निष्कर्ष बताएं।
संशोधन लूप
$$Learn \to Practise \to Check \to Correct \to Reattempt$$
एक त्रुटि लॉग रखें और गलत धारणा को उजागर करने वाले प्रश्नों पर दोबारा गौर करें।

अवधारणात्मक हल उदाहरण एवं अनुप्रयोग (Solved Examples)

उदाहरण 1
`try`, `except`, `else`, और `finally` ब्लॉक के बीच निष्पादन के सटीक अनुक्रम को समझाएं जब: (ए) कोई अपवाद नहीं होता है, और (बी) एक प्रत्याशित अपवाद होता है।
विस्तृत समाधान / उत्तर:
(ए) जब कोई अपवाद नहीं होता है: `try` ब्लॉक पूरी तरह से निष्पादित होता है → सभी `except` ब्लॉक छोड़ दिए जाते हैं → `else` ब्लॉक निष्पादित होता है → `finally` ब्लॉक निष्पादित होता है।
(बी) जब कोई प्रत्याशित अपवाद होता है: `try` ब्लॉक त्रुटि रेखा तक निष्पादित होता है और रुक जाता है → मिलान करने वाला `except` ब्लॉक निष्पादित होता है → `else` ब्लॉक छोड़ दिया जाता है → `finally` ब्लॉक निष्पादित होता है।
उदाहरण 2
सॉफ़्टवेयर डेवलपर्स को अपवाद वर्ग निर्दिष्ट किए बिना नंगे `except:` का उपयोग करने से क्यों बचना चाहिए?
विस्तृत समाधान / उत्तर:
एक नंगे `except:` `BaseException` से प्राप्त *हर* अपवाद को पकड़ता है - जिसमें `KeyboardInterrupt` (प्रोग्राम को रोकने के लिए Ctrl + C) और `SystemExit` जैसे महत्वपूर्ण सिस्टम सिग्नल शामिल हैं। यह प्रोग्राम को सामान्य टर्मिनल समाप्ति से प्रतिरक्षित बनाता है, गंभीर सिंटैक्स/लॉजिक बग को छुपाता है, और डिबगिंग को लगभग असंभव बना देता है। सर्वोत्तम अभ्यास के लिए विशिष्ट अपवादों (जैसे, `except ValueError:`) या न्यूनतम `except Exception:` को पकड़ने की आवश्यकता होती है।
उदाहरण 3
`try` ब्लॉक के अंदर रिटर्न स्टेटमेंट वाले निम्नलिखित कोड स्निपेट के सटीक आउटपुट का अनुमान लगाएं:
def test_finally():
    प्रयास करें:
        प्रिंट करें ("अंदर प्रयास करें")
        वापसी 1
    अंततः:
        प्रिंट करें ("अंत में अंदर")

प्रिंट("लौटा:", test_finally())
विस्तृत समाधान / उत्तर:
आउटपुट:
अंदर प्रयास
अंदर अंत में
लौटा: 1
स्पष्टीकरण: भले ही `try` ब्लॉक का सामना होता है `return 1` कथन, पायथन गारंटी देता है कि `finally` ब्लॉक फ़ंक्शन के वास्तव में बाहर निकलने से पहले निष्पादित होता है और कॉल करने वाले को नियंत्रण वापस स्थानांतरित करता है।

सामान्य गलतियाँ एवं परीक्षक के जाल (Examiner Traps)

सामान्य भ्रम / गलत उत्तर

किसी परिभाषा को प्रश्न या डेटा पर लागू किए बिना दोहराना।

सही वैज्ञानिक तथ्य

अवधारणा को पहचानें, प्रासंगिक साक्ष्य या गणना दिखाएं, और अंतिम निहितार्थ समझाएं।

सामान्य भ्रम / गलत उत्तर

छोड़ने की स्थिति, इकाइयाँ, डोमेन प्रतिबंध, या समायोजन प्रभाव।

सही वैज्ञानिक तथ्य

धारणाएं बताएं, इकाइयों को संरक्षित करें, सीमा मामलों की जांच करें, और मूल समस्या के विरुद्ध उत्तर को सत्यापित करें।

सामान्य भ्रम / गलत उत्तर

एक सही मध्यवर्ती परिणाम को प्रमाण के रूप में मानें कि संपूर्ण समाधान सही है।

सही वैज्ञानिक तथ्य

एक स्वतंत्र तर्कसंगतता जांच करें और परिणाम को वापस अध्याय सिद्धांत से जोड़ें।

पायथन अपवाद हैंडलिंग जीवनचक्र फ़्लोचार्ट

Python Exception Lifecycle: try - except - else - finally try: Critical Code Block Exception Raised? YES (Error) except: Handler Matches NO (Success) else: Runs on Success finally: ALWAYS EXECUTES Guaranteed Resource Cleanup (Close Files & DB Sockets)

अध्याय का सार संक्षेप एवं 10 मुख्य निष्कर्ष

मुख्य बिंदु 1
सिंटैक्स त्रुटियां निष्पादन से पहले भाषा व्याकरण का उल्लंघन करती हैं; वैध कोड के निष्पादन के दौरान रनटाइम अपवाद होते हैं।
मुख्य बिंदु 2
एक अनहैंडल अपवाद प्रोग्राम निष्पादन को समाप्त कर देता है और डायग्नोस्टिक ट्रेसबैक उत्सर्जित करता है।
मुख्य बिंदु 3
पायथन अपवाद पदानुक्रम `BaseException` पर निहित है, जिसमें मानक एप्लिकेशन त्रुटियां `Exception` से विरासत में मिलती हैं।
मुख्य बिंदु 4
`try` ब्लॉक रैप्स कोड जो एक अपवाद बढ़ा सकता है; `except` विशिष्ट अपवाद प्रकारों को पकड़ता है और संभालता है।
मुख्य बिंदु 5
एक एकल `try` कथन में विभिन्न त्रुटि प्रकारों को विशिष्ट रूप से संभालने के लिए एकाधिक `except` हैंडलर की सुविधा हो सकती है।
मुख्य बिंदु 6
`else` खंड केवल तभी निष्पादित होता है जब `try` ब्लॉक बिना किसी अपवाद के सफलतापूर्वक पूरा हो जाता है।
मुख्य बिंदु 7
`finally` खंड को सभी शर्तों के तहत निष्पादित करने की गारंटी दी जाती है, जिससे यह बनता है संसाधन सफाई के लिए आवश्यक।
मुख्य बिंदु 8
`raise` कथन प्रोग्रामर को जानबूझकर अंतर्निहित या कस्टम अपवादों को ट्रिगर करने की अनुमति देता है।
मुख्य बिंदु 9
`assert condition, message` कथन रक्षात्मक अभिकथन जांच प्रदान करता है, गलत होने पर `AssertionError` बढ़ाता है।
मुख्य बिंदु 10
कस्टम अपवाद मानक `Exception` वर्ग को उप-वर्गीकृत करके बनाए जाते हैं, जिससे सूक्ष्म व्यावसायिक तर्क त्रुटि प्रबंधन सक्षम होता है।

स्व-मूल्यांकन अभ्यास (Check Your Understanding)

मूल वैचारिक स्पष्टता की जांच के लिए नैदानिक प्रश्न। पहले स्वयं हल करें, फिर उत्तर देखें।

1
`try`, `except`, `else`, और `finally` ब्लॉकों के बीच निष्पादन के सटीक अनुक्रम को समझाएं जब: (ए) कोई अपवाद नहीं होता है, और (बी) एक प्रत्याशित अपवाद होता है।
उत्तर एवं व्याख्या देखें
उत्तर: (ए) जब कोई अपवाद नहीं होता है होता है: `try` ब्लॉक पूरी तरह से निष्पादित होता है → सभी `except` ब्लॉक छोड़ दिए जाते हैं → `else` ब्लॉक निष्पादित होता है → `finally` ब्लॉक निष्पादित होता है।
(बी) जब एक प्रत्याशित अपवाद होता है: `try` ब्लॉक त्रुटि रेखा तक निष्पादित होता है और रुक जाता है → मिलान करने वाला `except` ब्लॉक निष्पादित होता है → `else` ब्लॉक छोड़ दिया गया है → `finally` ब्लॉक निष्पादित होता है।
प्रयास → अन्यथा → अंततः सफलता पर; कोशिश करें → सिवाय → अंततः त्रुटि पर।
2
सॉफ़्टवेयर डेवलपर्स को अपवाद वर्ग निर्दिष्ट किए बिना नंगे `except:` का उपयोग करने से क्यों बचना चाहिए?
उत्तर एवं व्याख्या देखें
उत्तर: A नंगे `except:` `BaseException` से प्राप्त *हर* अपवाद को पकड़ता है - जिसमें `KeyboardInterrupt` (प्रोग्राम को रोकने के लिए Ctrl + C) और `SystemExit` जैसे महत्वपूर्ण सिस्टम सिग्नल शामिल हैं। यह प्रोग्राम को सामान्य टर्मिनल समाप्ति से प्रतिरक्षित बनाता है, गंभीर सिंटैक्स/लॉजिक बग को छुपाता है, और डिबगिंग को लगभग असंभव बना देता है। सर्वोत्तम अभ्यास के लिए विशिष्ट अपवादों (जैसे, `except ValueError:`) या न्यूनतम `except Exception:` को पकड़ने की आवश्यकता होती है।
कीबोर्ड इंटरप्ट और सिस्टम एग्जिट को छोड़कर बाकी, सामान्य प्रोग्राम समाप्ति को रोकता है।
3
`try` ब्लॉक के अंदर रिटर्न स्टेटमेंट वाले निम्नलिखित कोड स्निपेट के सटीक आउटपुट की भविष्यवाणी करें:
def test_finally():
    प्रयास करें:
        प्रिंट करें ("अंदर प्रयास करें")
        वापसी 1
    अंततः:
        प्रिंट करें ("अंत में अंदर")

प्रिंट("लौटा:", test_finally())
उत्तर एवं व्याख्या देखें
उत्तर: आउटपुट:
अंदर प्रयास
अंदर अंत में
लौटा: 1
स्पष्टीकरण: भले ही `try` ब्लॉक का सामना होता है `return 1` स्टेटमेंट, पायथन गारंटी देता है कि `finally` ब्लॉक फ़ंक्शन के वास्तव में बाहर निकलने से पहले निष्पादित होता है और कॉल करने वाले को नियंत्रण वापस स्थानांतरित करता है।
अंततः रिटर्न स्टेटमेंट फ़ंक्शन से बाहर निकलने से पहले निष्पादित होने की गारंटी देता है।
4
पाइथॉन में `assert` स्टेटमेंट का उद्देश्य क्या है? यह मानक `if-else` चेक से किस प्रकार भिन्न है?
उत्तर एवं व्याख्या देखें
उत्तर: `assert` स्टेटमेंट एक डिबगिंग और रक्षात्मक प्रोग्रामिंग टूल है जिसका उपयोग आंतरिक प्रोग्राम मान्यताओं को सत्यापित करने के लिए किया जाता है कि यदि कोड बग-मुक्त है तो *हमेशा सत्य होना चाहिए*। यदि दावा विफल हो जाता है, तो यह तुरंत `AssertionError` बढ़ा देता है। इसके विपरीत, `if-else` अपेक्षित वास्तविक दुनिया के उपयोगकर्ता या रनटाइम स्थितियों को शानदार ढंग से संभालता है। अनुकूलन ध्वज (`python -O`) के साथ पायथन चलाकर उत्पादन परिवेश में अभिकथनों को विश्व स्तर पर अक्षम किया जा सकता है।
assert डिबगिंग के दौरान आंतरिक डेवलपर मान्यताओं के लिए है; if-else रनटाइम उपयोगकर्ता स्थितियों को संभालता है।
5
एक पायथन प्रोग्राम लिखें जो उपयोगकर्ता को दो पूर्णांकों के लिए संकेत देता है और उन्हें विभाजित करता है, कस्टम उपयोगकर्ता-अनुकूल संदेशों के साथ `ZeroDivisionError` और `ValueError` दोनों को संभालता है।
उत्तर एवं व्याख्या देखें
उत्तर:
प्रयास करें:
    a = int(इनपुट(''पहला पूर्णांक दर्ज करें:''))
    b = int(इनपुट(''दूसरा पूर्णांक दर्ज करें:''))
    परिणाम = ए / बी
ZeroDivisionError को छोड़कर:
    प्रिंट करें ("त्रुटि: किसी भी संख्या को शून्य से विभाजित नहीं किया जा सकता!")
वैल्यूएरर को छोड़कर:
    प्रिंट करें ("त्रुटि: अमान्य इनपुट! आपको पूर्णांक संख्याएं दर्ज करनी होंगी।")
अन्य:
    प्रिंट(f"डिवीजन परिणाम: {परिणाम}")
अंततः:
    प्रिंट करें ("निष्पादन पूरा हुआ।")

प्रयास के अंदर इनपुट और विभाजन लपेटें; ZeroDivisionError और वैल्यूएरर को अलग से पकड़ें।
6
आप पायथन में कस्टम उपयोगकर्ता-परिभाषित अपवाद कैसे बनाते हैं? `NegativeNumberError`.
उत्तर एवं व्याख्या देखें
उत्तर:
वर्ग NegativeNumberError(अपवाद) का संपूर्ण कोड उदाहरण प्रदान करें:
    """नकारात्मक संख्यात्मक इनपुट के लिए अपवाद उठाया गया।"""
    def init(स्वयं, मान, संदेश = "नकारात्मक संख्याएँ सख्त वर्जित हैं!"):
        स्व.मूल्य = मूल्य
        self.message = f"{message} (प्राप्त: {मान})"
        सुपर().init(self.message)

डीईएफ़ कंप्यूट_स्क्वायर_रूट(एन):
    यदि n < 0:
        raise NegativeNumberError(n)
    return n ** 0.5

try:
    print(compute_square_root(-25))
except NegativeNumberError as e:
    print("Caught Custom Exception:", e)

उपवर्ग अपवाद, init लागू करें, और raise का उपयोग करके ट्रिगर करें।

7
`except ExceptionName as e:` कथन में `as` कीवर्ड का क्या महत्व है?
उत्तर एवं व्याख्या देखें
उत्तर:

as कीवर्ड पकड़े गए अपवाद उदाहरण को एक स्थानीय चर (आमतौर पर e या नामित) से बांधता है err). यह प्रोग्रामर को वास्तविक त्रुटि संदेश, त्रुटि तर्क (e.args), या त्रुटि वर्ग नाम (type(e).name) का निरीक्षण करने और डायग्नोस्टिक तकनीकी विवरण को एक फ़ाइल में लॉग करने की अनुमति देता है।


रनटाइम अपवाद उदाहरण को डायग्नोस्टिक निरीक्षण के लिए एक चर में बांधता है।
8
विरासत संबंध (जैसे, `ArithmeticError` और `ZeroDivisionError`) के साथ अपवादों को संभालते समय `except` ब्लॉक के क्रम को समझाएं। यदि माता-पिता को बच्चे के सामने रखा जाए तो क्या होगा?
उत्तर एवं व्याख्या देखें
उत्तर: पायथन में, `except` ब्लॉक का मूल्यांकन ऊपर से नीचे तक किया जाता है। क्योंकि `ZeroDivisionError`, `ArithmeticError` का एक उपवर्ग है, `except ArithmeticError:` को `except ZeroDivisionError:` से पहले रखने से मूल ब्लॉक सभी डिवीजन-दर-शून्य त्रुटियों को रोक देता है, जिससे विशेष चाइल्ड ब्लॉक पहुंच योग्य (डेड कोड) नहीं हो पाता है। चाइल्ड अपवादों को हमेशा पैरेंट सुपरक्लास अपवादों से पहले पकड़ा जाना चाहिए।
चाइल्ड अपवादों को छाया से बचने के लिए हैंडलर श्रृंखला में पैरेंट अपवादों से पहले होना चाहिए।
अध्याय का अध्ययन पूर्ण हुआ?
अभ्यास के लिए तैयार?

ऑनलाइन CBT टेस्ट देकर तैयारी का मूल्यांकन करें

झारखण्ड बोर्ड परीक्षा पैटर्न पर आधारित बहुविकल्पीय प्रश्नों का ऑनलाइन टेस्ट दें। तुरंत परिणाम, समय विश्लेषण और प्रत्येक प्रश्न का विस्तृत हल प्राप्त करें।

AI अध्ययन मित्र

त्वरित शंका समाधान

तरीकों (Methods) में कोई संदेह या प्रश्न है? हमारे AI अध्ययन मित्र से तुरंत समझें।