एक अपवाद 'ए' को संभालने के दौरान, यह संभव है कि दूसरा अपवाद 'बी' हो सकता है। पायथन 2.0 संस्करणों में, यदि ऐसा होता है, तो अपवाद बी को बाहर की ओर प्रचारित किया जाता है और अपवाद ए खो जाता है। समस्या को दूर करने के लिए दोनों अपवादों के बारे में जानना उपयोगी है।
कभी-कभी अपवाद हैंडलर के लिए यह उपयोगी होता है कि वह जानबूझकर एक अपवाद को फिर से बढ़ाए, या तो अतिरिक्त जानकारी प्रदान करने के लिए या किसी अन्य प्रकार के अपवाद का अनुवाद करने के लिए। __कारण__ विशेषता अपवाद के प्रत्यक्ष कारण को रिकॉर्ड करने का एक स्पष्ट तरीका प्रदान करती है।
अपवाद श्रृखंला केवल पायथन 3 में उपलब्ध है। पायथन 3 में वृद्धि ... खंड से श्रृंखला अपवाद तक है। हम दिए गए कोड को फिर से लिखने के लिए raise..from क्लॉज का उपयोग करते हैं
try: s = {‘a’:1, ‘b’:2}['c'] except KeyError as e: raise ValueError('failed') from e
पायथन 3 डिफ़ॉल्ट रूप से अपवाद हैंडलिंग के दौरान होने वाले सभी अपवादों को इस तरह दिखाएगा:
Traceback (most recent call last): File "source_file.py", line 2, in <module> s = {'a':1, ‘b’:2}['c'] KeyError: 'c'
उपरोक्त अपवाद निम्नलिखित अपवाद का प्रत्यक्ष कारण था:
Traceback (most recent call last): File "source_file.py", line 4, in <module> raise ValueError('failed') from e ValueError: failed