dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

python での例外発生時の except と finally の実行順序

2022-09-09 12:29:20 | python
python で例外が発生した場合の except と finally の実行順序を調べてみました。
例外発生時は except を実行後に finally を実行し、except 内の raise によろ呼び出し元で例外が補足されます。
以下のプログラムで検証を行いました。

■プログラム
def func1():
    try:
        print("func1: start")
        func2()
    except Exception as e:
        print("func1: except")
        raise
    finally:
        print("func1: finally")

    print("func1: end")


def func2():
    try:
        print("func2: start")
        func3()
    except Exception as e:
        print("func2: except")
        raise
    finally:
        print("func2: finally")

    print("func2: end")

def func3():
    try:
        print("func3: start")
        raise
    except Exception as e:
        print("func3: except")
        raise
    finally:
        print("func3: finally")

    print("func3: end")

try:
    func1()
except Exception as e:
    pass

■実行結果
func1: start
func2: start
func3: start
func3: except
func3: finally
func2: except
func2: finally
func1: except
func1: finally


この記事についてブログを書く
« TypeScript での catch と fi... | トップ | Python で MySQL の blob に... »

python」カテゴリの最新記事