একটি এক্সসেপশন 'A'-র হ্যান্ডলিংয়ের সময়, এটি সম্ভব যে অন্য একটি এক্সসেপশন 'B'~Occur করতে পারে। পাইথন ২.০ ভার্সনগুলিতে, যদি এটি হয়, তবে এক্সসেপশন B আউটওয়ার্ড প্রোপাগেট হয় এবং এক্সসেপশন A হারিয়ে যায়। ডিবাগ করার জন্য দুটি এক্সসেপশন জানা উপকারী।
কখনও কখনও একটি এক্সসেপশন হ্যান্ডলার জানবুঝকেই একটি এক্সসেপশন রি-রেইজ করে, হয় এক্সট্রা ইনফরমেশন দিতে বা একটি এক্সসেপশনকে অন্য টাইপে ট্রান্সলেট করতে। __cause__` অ্যাট্রিবিউট একটি এক্সসেপশনের ডাইরেক্ট কারণ রেকর্ড করার একটি স্পষ্ট পদ্ধতি দেয়।
এক্সসেপশন চেইনিং শুধু পাইথন ৩-এ উপলব্ধ। পাইথন ৩-এ raise ... from` ক্লজ রয়েছে এক্সসেপশন চেইন করতে। আমরা দেওয়া কোডকে raise..from` ক্লজ ব্যবহার করে নিচেরভাবে রি-রাইট করি:
try:
s = {'a':1, 'b':2}['c']
except KeyError as e:
raise ValueError('failed') from e
পাইথন ৩ ডিফল্টভাবে এক্সসেপশন হ্যান্ডলিংয়ের সময়~Occur করা সকল এক্সসেপশন দেখাবে, নিচের মত:
Traceback (most recent call last): File "source_file.py", line 2, ins = {'a':1, 'b':2}['c'] KeyError: 'c' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "source_file.py", line 4, in raise ValueError('failed') from e ValueError: failed