python での try-except-else-finally

下のサンプルコードと実行結果を参照.

  • 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

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*