python で例外が発生した場合の except と finally の実行順序を調べてみました。
例外発生時は except を実行後に finally を実行し、except 内の raise によろ呼び出し元で例外が補足されます。
以下のプログラムで検証を行いました。
■プログラム
■実行結果
例外発生時は 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