I have doubt in python exception. Below code is taken from python document and I am confuse at one point. If any one can help, will be thankful. Here this codes gives output as:
B C D
class B(Exception):
pass
class C(B):
pass
class D(C):
pass
for cls in [B, C, D]:
try:
raise cls()
except D:
print("D")
except C:
print("C")
except B:
print("B")
If I change except part of code like below code: output will be :
B B B
class B(Exception):
pass
class C(B):
pass
class D(C):
pass
for cls in [B, C, D]:
try:
raise cls()
except B:
print("B")
except C:
print("C")
except D:
print("D")
When I run this code without try block as shown below:
class B(Exception):
pass
class C(B):
pass
class D(C):
pass
for cls in [B, C, D]:
raise cls()
Here output is:
Traceback (most recent call last):
File "C:/Users/885710/Documents/PY/ErrorHandling.py", line 12, in <module>
raise cls()
B
Similary for below code:
class B(Exception):
pass
class C(B):
pass
class D(C):
pass
for cls in [C,B, D]:
raise cls()
Output is this
Traceback (most recent call last):
File "C:/Users/885710/Documents/PY/ErrorHandling.py", line 12, in <module>
raise cls()
C
I confused because, if I run this code separately then it gives output as B or C or D then why in my second code snippet it is giving output as
B
B
B
even though except is define for all 3 Class B, C, D
class C(Exception):,class D(Exception):.