अपवाद (Exceptions)

Python में, विभाजन और फ़ाइल हैंडलिंग जैसी क्रियाएँ करना बहुत आसान है। लेकिन कभी-कभी प्रोग्राम के निष्पादन के दौरान त्रुटियाँ हो सकती हैं, जिससे प्रोग्राम अचानक रुक सकता है। यही वह जगह है जहां अपवाद प्रबंधन काम आता है। Python में अपवादों को संभालने के लिए try, except ब्लॉक का उपयोग किया जाता है। ऐसी क्रियाएँ जो अपवाद पैदा कर सकती हैं उन्हें try ब्लॉक के अंदर रखा जाता है, और अपवादों को संभालने वाला कोड except ब्लॉक में रखा जाता है।
एक सरल विभाजन ऑपरेशन पर विचार करें:
a = int(input())
b = int(input())
print(a / b)
print('The program continues...')
यदि हम इनपुट में 10 और 2 देते हैं, तो प्रोग्राम 5.0 और The program continues... प्रिंट करेगा। लेकिन अगर हम 10 और 0 इनपुट करते हैं, तो प्रोग्राम रुक जाएगा और एक त्रुटि संदेश प्रिंट करेगा: ZeroDivisionError: division by zero
इस त्रुटि को संभालने के लिए, हम अपवाद प्रबंधन का उपयोग कर सकते हैं:
try:                       # इस ब्लॉक में क्रियाएँ करने का प्रयास
    a = int(input())
    b = int(input())
    print(a / b)
except ZeroDivisionError:  # यदि ZeroDivisionError होती है तो क्या करें
    print('Error: Division by zero is not allowed.')

print('The program continues...')
अब यदि हम प्रोग्राम को इनपुट 10 और 0 के साथ चलाते हैं, तो यह Error: Division by zero is not allowed. और The program continues... प्रिंट करेगा।
इसी तरह, हम अन्य अपवादों जैसे ValueError को संभाल सकते हैं, जो तब होता है जब इनपुट मान्य पूर्णांक नहीं होता। हम इस त्रुटि को संभालने के लिए एक और except ब्लॉक जोड़ सकते हैं:
try:
    a = int(input())
    b = int(input())
    print(a / b)
except ZeroDivisionError:
    print('Error: Division by zero is not allowed.')
except ValueError:
    print('Error: Input is not a valid integer.')
हम जितने चाहें उतने except ब्लॉक जोड़ सकते हैं ताकि विभिन्न प्रकार की त्रुटियों को संभाला जा सके। इस तरह, हम सुनिश्चित कर सकते हैं कि हमारा प्रोग्राम त्रुटियों के कारण अचानक न रुके और उपयोगकर्ता को सहायक संदेश प्रदान करे।
💡
यह ध्यान रखना महत्वपूर्ण है कि except ब्लॉकों का क्रम मायने रखता है। Python उस पहले except ब्लॉक को निष्पादित करेगा जो हुई त्रुटि के प्रकार से मेल खाता है। यदि कोई except ब्लॉक मेल नहीं खाता, तो त्रुटि नहीं संभाली जाएगी।
आप एक ही लाइन में कई अपवादों को भी पकड़ सकते हैं:
try:
    a = int(input())
    b = int(input())
    print(a / b)
except (ZeroDivisionError, ValueError) as e:
    print('Error:', e)
यहाँ, e में उठाए गए अपवाद का उदाहरण होगा।
अपवाद प्रबंधन का उपयोग करके, हम अपने Python प्रोग्रामों को अधिक मज़बूत और उपयोगकर्ता-अनुकूल बना सकते हैं।

चुनौती: एक आयत का क्षेत्रफल

आपको एक प्रोग्राम लिखना है जो इनपुट से दो फ्लोटिंग-पॉइंट संख्याएँ पढ़ेगा; ये संख्याएँ h और w एक आयत की ऊँचाई और चौड़ाई का प्रतिनिधित्व करती हैं। आपका कार्य आयत का क्षेत्रफल गणना करना और प्रिंट करना है।
हालाँकि, सभी इनपुट वैध संख्याएँ होंगी, इसकी गारंटी नहीं है। यदि h या w में से कोई भी संख्या नहीं है, तो आपको अपवाद को संभालना चाहिए और The input is not a number प्रिंट करना चाहिए।
इनपुट की पहली पंक्ति में ऊँचाई h और दूसरी पंक्ति में चौड़ाई w होगी।
प्रोग्राम को एक ही पंक्ति में आयत का क्षेत्रफल प्रिंट करना चाहिए यदि इनपुट मान्य संख्याएँ हैं, या यदि एक या दोनों इनपुट मान्य संख्याएँ नहीं हैं तो The input is not a number प्रिंट करना चाहिए।
इनपुट
आउटपुट
5.2 7.8
40.56
3.7 abc
The input is not a number
abc 5.5
The input is not a number
abc def
The input is not a number
नोट: यदि इनपुट संख्याएँ हैं तो वे केवल धनात्मक संख्याएँ होंगी।
 

Constraints

Time limit: 1 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue