以下の処理についての質問です
Python
1Python 2def warikan(total, num): 3 try: 4 siharai = total // num 5 message = '一人あたり{}円です。'.format(siharai) 6 if total % num > 0: 7 return message + '{}円の余りが生じています'.format(total % num) 8 return message 9 except ZeroDivisionError: 10 print('ゼロ除算が発生しました。') # 実行1 11 message = '0人で割り勘しないでください!' 12 return message # 実行3 13 finally: 14 print('finally') # 実行2 15 16print(warikan(1000, 0)) 17
実行結果:
ゼロ除算が発生しました。
finally
0人で割り勘しないでください!
実行の順番としては
・ゼロ除算が発生しました。
・0人で割り勘しないでください!
・finally
try節でエラーの発生する場合、try節を中断しexcept節で例外処理を行ったあとに、finally節の処理が実行されると思っていました。
しかし実行結果を見る限り、finally節の後にreturn messageが実行されているように見えます。
しかも同じexcept節内のprintは先に実行されています。
なぜこの順番で実行されるのでしょうか?
ご存知の方、よろしければ教えてください。
よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー