下のサンプルコードと実行結果を参照.
- 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