यदि आप केवल 3. अजगर का समर्थन करने के लिए पर्याप्त भाग्यशाली हैं, तो यह वास्तव में सुंदरता की बात बन जाता है :)
से बढ़ा
हम ऊपर से उपयोग करके अपवादों की श्रृंखला बना सकते हैं ।
try:
1 / 0
except ZeroDivisionError as e:
raise Exception('Smelly socks') from e
इस स्थिति में, आपका कॉल करने वाला अपवाद उस स्थान की पंक्ति संख्या होगा जहां हम अपना अपवाद बढ़ाते हैं।
Traceback (most recent call last):
File "test.py", line 2, in <module>
1 / 0
ZeroDivisionError: division by zero
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "test.py", line 4, in <module>
raise Exception('Smelly socks') from e
Exception: Smelly socks
ध्यान दें कि नीचे के अपवाद में केवल स्टैकट्रेस है जहां से हमने अपना अपवाद उठाया है। आपका कॉलर अभी भी एक्सेस करके मूल अपवाद प्राप्त कर सकता है__cause__
पकड़े गए अपवाद विशेषता ।
with_traceback
या आप with_traceback का उपयोग कर सकते हैं ।
try:
1 / 0
except ZeroDivisionError as e:
raise Exception('Smelly socks').with_traceback(e.__traceback__)
इस फॉर्म का उपयोग करते हुए, आपके कॉलर को पकड़ने वाला अपवाद ट्रेसबैक होगा जहां से मूल त्रुटि हुई थी।
Traceback (most recent call last):
File "test.py", line 2, in <module>
1 / 0
ZeroDivisionError: division by zero
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "test.py", line 4, in <module>
raise Exception('Smelly socks').with_traceback(e.__traceback__)
File "test.py", line 2, in <module>
1 / 0
Exception: Smelly socks
ध्यान दें कि अपवाद में वह रेखा है जहां हमने अमान्य विभाजन के साथ-साथ उस पंक्ति को प्रदर्शित किया है, जहां हम अपवाद को पुन: उत्पन्न करते हैं।