Python Academy · पाठ

कस्टम अपवाद क्लास

त्रुटियों को अधिक स्पष्ट रूप से संप्रेषित करने के लिए अपने अपवाद प्रकार परिभाषित करें।

पाठ 4, कुल 4 में से14 चरण

कस्टम अपवाद क्लास, CoddyKit पर Python Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Python Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

परिचय

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

कस्टम अपवाद क्यों?

अंतर्निहित अपवाद बहुत सामान्य होते हैं। कस्टम अपवाद कॉल करने वालों को असंबंधित त्रुटियों को पकड़े बिना केवल YOUR लाइब्रेरी की त्रुटियाँ पकड़ने देते हैं।
class AppError(Exception):
    pass
raise AppError('something went wrong')

Exception से विरासत लेना

class MyError(Exception): pass ही पर्याप्त है। हमेशा Exception से विरासत लें, BaseException से नहीं।
class ValidationError(Exception):
    pass
try:
    raise ValidationError('email is invalid')
except ValidationError as e:
    print(e)

कस्टम एट्रिब्यूट जोड़ना

class APIError(Exception): def __init__(self, status, message): self.status = status; super().__init__(message)
class APIError(Exception):
    def __init__(self, status, message):
        self.status = status
        super().__init__(message)
try:
    raise APIError(404, 'Not found')
except APIError as e:
    print(e.status, e)

अपवादों का पदानुक्रम

एक पदानुक्रम बनाएँ: class DBError(AppError): pass — कॉल करने वाले किसी भी ऐप त्रुटि के लिए AppError या विशेष रूप से DBError पकड़ सकते हैं।
class AppError(Exception): pass
class DBError(AppError): pass
class NetworkError(AppError): pass
try:
    raise DBError('timeout')
except AppError as e:
    print('app error:', e)

कस्टम __str__ विधि

प्रिंट किए जाने पर अपवाद संदेश कैसा दिखे, इसे नियंत्रित करने के लिए __str__ को ओवरराइड करें।
class RangeError(ValueError):
    def __init__(self, val, lo, hi):
        self.val, self.lo, self.hi = val, lo, hi
    def __str__(self):
        return f'{self.val} not in [{self.lo}, {self.hi}]'
print(RangeError(15, 0, 10))

कस्टम अपवाद उत्पन्न करना

डोमेन-विशिष्ट त्रुटियों का संकेत देने के लिए अपने फ़ंक्शन में raise का उपयोग करें। इससे कॉल करने वालों के लिए साफ़ API बनती है।
class InsufficientFundsError(Exception):
    def __init__(self, needed, available):
        super().__init__(f'Need {needed}, have {available}')
def withdraw(balance, amount):
    if amount > balance:
        raise InsufficientFundsError(amount, balance)
    return balance - amount
try:
    withdraw(100, 200)
except InsufficientFundsError as e:
    print(e)

आधार क्लास से पकड़ना

except AppError सभी उपक्लास को पकड़ता है: DBError, NetworkError आदि। पदानुक्रम कॉल करने वालों को विशिष्टता चुनने देता है।
class AppError(Exception): pass
class DBError(AppError): pass
try:
    raise DBError('conn failed')
except AppError:
    print('any app error')

संदर्भ प्रबंधक के साथ अपवाद

कस्टम अपवाद संदर्भ प्रबंधकों के साथ एकीकृत होते हैं: class suppressed: __exit__ अपवाद को दबाने के लिए True लौटाता है।
class SuppressValue(Exception): pass
try:
    raise SuppressValue('ignored')
except SuppressValue:
    pass  # suppress silently
print('continued')

कस्टम अपवादों का दस्तावेज़ीकरण

दस्तावेज़ित करें कि WHEN अपवाद उत्पन्न करना है और एट्रिब्यूट का WHAT अर्थ है। अच्छे डॉकस्ट्रिंग कस्टम अपवादों को उपयोगी बनाते हैं।
class ConfigError(Exception):
    """Raised when configuration is invalid.
    Attributes:
        key: The invalid config key
    """
    def __init__(self, key, msg):
        super().__init__(msg)
        self.key = key

सर्वोत्तम अभ्यास

पदानुक्रम को उथला रखें (2-3 स्तर)। हमेशा Exception से विरासत लें। Error पर समाप्त होने वाले वर्णनात्मक नामों का उपयोग करें। इन्हें समर्पित exceptions.py मॉड्यूल में रखें।
# Good structure:
class AppError(Exception): pass
class ValidationError(AppError): pass
class NotFoundError(AppError): pass
print('hierarchy demo')

त्वरित जाँच

सिस्टम बंद करने वाली घटनाओं को पकड़ने से बचने के लिए कस्टम अपवादों को किससे विरासत लेनी चाहिए?

पुनरावलोकन

कस्टम अपवाद: Exception से विरासत लें, __init__ में एट्रिब्यूट जोड़ें और __str__ को ओवरराइड करें। पकड़ने योग्य बनाने के लिए पदानुक्रम बनाएँ। इन्हें exceptions.py मॉड्यूल में रखें।

आगे बढ़ते रहें

बहुत अच्छा काम किया! प्रगति जारी रखने के लिए अगले पाठ पर जाएँ।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Python सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
76
पाठ
320

अक्सर पूछे जाने वाले प्रश्न

क्या “कस्टम अपवाद क्लास” पाठ निःशुल्क है?

हाँ—“कस्टम अपवाद क्लास” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Python Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“कस्टम अपवाद क्लास” में मैं क्या सीखूँगा?

त्रुटियों को अधिक स्पष्ट रूप से संप्रेषित करने के लिए अपने अपवाद प्रकार परिभाषित करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Python Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Python Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Python Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“कस्टम अपवाद क्लास” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Python Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Python Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. अपवादों को समझना
  2. try / except / else / finally
  3. अपवाद उत्पन्न करना और दोबारा उत्पन्न करना
  4. कस्टम अपवाद क्लास
← Python Academy पर वापस जाएँ