下のサンプルコードと実行結果を参照.
- tryブロックで例外が発生して,except で捕捉されなかった場合には,elseは実行されない (arg = 2).
- try や except や else で return されても,finally は実行される (arg = 0,3,4).
- try で return されると,elseは実行されない (arg = 3).
サンプルコード:
class A(Exception):
pass
class B(Exception):
pass
def func(arg):
print('------ {}'.format(arg))
try:
if (arg <= 1):
raise A()
elif (arg == 2):
raise B()
elif (arg == 3):
return
except A:
print("A")
if (arg == 0):
return
else:
print("else")
if (arg == 4):
return
finally:
print("finally")
print("after try")
for arg in range(6):
try:
func(arg)
except:
print("B (uncaught)")
実行結果:
------ 0 A finally ------ 1 A finally after try ------ 2 finally B (uncaught) ------ 3 finally ------ 4 else finally ------ 5 else finally after try