ระหว่างการจัดการกับข้อยกเว้น 'A' หนึ่ง เป็นไปได้ว่าอาจมีข้อยกเว้น 'B' อื่นเกิดขึ้น ในเวอร์ชัน Python 2.0 หากเป็นเช่นนี้ ข้อยกเว้น B จะถูกเผยแพร่ออกไปภายนอก และข้อยกเว้น A จะหายไป เป็นประโยชน์ที่จะทราบเกี่ยวกับข้อยกเว้นทั้งสองเพื่อแก้ปัญหา
บางครั้งจะเป็นประโยชน์สำหรับตัวจัดการข้อยกเว้นในการจงใจยกข้อยกเว้นขึ้นใหม่ ไม่ว่าจะเป็นการให้ข้อมูลเพิ่มเติมหรือเพื่อแปลข้อยกเว้นเป็นประเภทอื่น แอตทริบิวต์ __cause__ ให้วิธีการที่ชัดเจนในการบันทึกสาเหตุโดยตรงของข้อยกเว้น
การโยงข้อยกเว้นมีเฉพาะใน Python 3 เท่านั้น Python 3 มีการยก ... จากข้อเป็นข้อยกเว้นของลูกโซ่ เราเขียนโค้ดที่ได้รับใหม่โดยใช้การยก..จากข้อดังนี้
try: s = {‘a’:1, ‘b’:2}['c'] except KeyError as e: raise ValueError('failed') from e
โดยค่าเริ่มต้น Python 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