एक पैरामीटर रहित अपवाद को परिभाषित करना:
class MyException(Exception):
pass
जब उठाया जाता है, तो क्या कोई अंतर है:
raise MyException
तथा
raise MyException()
मुझे कोई नहीं मिला; क्या यह केवल एक अतिभारित वाक्यविन्यास है?
एक पैरामीटर रहित अपवाद को परिभाषित करना:
class MyException(Exception):
pass
जब उठाया जाता है, तो क्या कोई अंतर है:
raise MyException
तथा
raise MyException()
मुझे कोई नहीं मिला; क्या यह केवल एक अतिभारित वाक्यविन्यास है?
जवाबों:
संक्षिप्त उत्तर यह है कि दोनों raise MyException
औरraise MyException()
एक ही बात करते हैं। यह पहला फ़ॉर्म ऑटो आपके अपवाद को तत्काल बताता है।
डॉक्स से प्रासंगिक अनुभाग कहते हैं, " बढ़ाने अपवाद वस्तु के रूप में पहली अभिव्यक्ति मूल्यांकन करता है। यह या तो एक उपवर्ग या BaseException का एक उदाहरण होना चाहिए। यदि यह एक वर्ग है, अपवाद उदाहरण है जब साथ वर्ग instantiating द्वारा आवश्यक प्राप्त की जाएगी कोई तर्क नहीं। "
कहा कि, शब्दार्थ समान होते हुए भी, पहला रूप सूक्ष्म रूप से तेज होता है, और दूसरा रूप अधिक लचीला होता है (क्योंकि जरूरत पड़ने पर आप इसे तर्क पास कर सकते हैं)।
पाइथन (सामान्य पुस्तकालय में, लोकप्रिय अनुप्रयोगों में, और कई पुस्तकों में) का उपयोग करने वाली सामान्य शैली का उपयोग raise MyException
तब किया जाता है जब कोई तर्क नहीं होता है। लोग केवल उस अपवाद को तुरंत समाप्त कर देते हैं जब कुछ तर्क पारित करने की आवश्यकता होती है। उदाहरण के लिए raise KeyError(badkey)
:।
पर जाओ देखो के लिये दस्तावेज raise
बयान । इसका एक उदाहरण बना रहा है MyException
।
raise
थोड़ा बदल गया है। इस प्रश्न के लिए प्रासंगिक हिस्सा वही है, हालांकि ( raise ExceptionType
अभी भी कोई तर्क के साथ इसके निर्माता को कॉल करके प्रकार का एक उदाहरण बनाता है)।
हां, ValueError
और दोनों के बीच अंतर हैValueError()
ValueError
एक वर्ग है जबकि एक वर्ग का ValueError()
एक उदाहरण बनाता है। यही कारण है type(ValueError) is type
औरtype(ValueError()) is ValueError
इसका एकमात्र उद्देश्य raise
अपवाद उठाना है,
जब हम उपयोग करते हैं
ValueError
, तो क्लास को बुलाया जाएगा जो बदले में कंस्ट्रक्टर चलाता हैValueError()
जब हम उपयोग करते हैं
ValueError()
, तो विधिValueError()
को सीधे कहा जाता है।
ध्यान दें: raise ValueError # shorthand for 'raise ValueError()'