同じ実行結果になるのは例外を握り潰しているからです。
次のような例が適当でしょう。
例1
例えば、例外を上位に送出するようなとき。
Python
1try:
2 print('try')
3 1 / 0
4except ZeroDivisionError:
5 print('except')
6 raise
7finally:
8 print('finally')
9
10print('out of block')
実行結果 Wandbox
try
except
finally
Traceback (most recent call last):
File "prog.py", line 3, in <module>
1 / 0
ZeroDivisionError: division by zero
例2
またfinally節はtry節/except節内でreturn文が実行された場合も呼び出されます。
Python
1def func():
2 try:
3 return 1
4 finally:
5 print('finally')
6
7 return 2
8
9ret = func()
10print(ret)
実行結果 Wandbox
finallyの役割
例外が起ころうが/起こるまいが無視できない処理をfinally節に書きます。
リソースの解放などに相当します。
Python
1res = リソースを確保
2try:
3 色んな処理
4except ...:
5 例外処理
6finally:
7 resの解放
しかしこのような場合はwith文を使うのがより適切なケースが多いように思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/01 12:49