クリーンアップ動作について
クリーンアップ動作とは、システムリソースを管理する動作を指します。
クリーンアップ動作は、基本的に例外処理のあとに定義することが多く、finally節を使って記述します。
※例外のクラス階層について
clean_up.py
try:
例外が起きそうなコード
except 例外の型 as 変数名:
特定の例外が起きた場合に実行するコード
else:
特定の例外が起きなかった場合に実行するコード
finally:
常に実行するコード
問題
■ 次の実行結果を求めよ。
try.py
try:
raise KeyboardInterrupt
except:
print('Goodbye, world!')
# Goodbye, world!
● 解説
-
try:ブロックが開始されます。 -
raise KeyboardInterruptが実行されます。これにより、KeyboardInterruptという種類の例外が発生します。 -
except:ブロックに移動します。ここでは例外の種類を指定していませんが、どの種類の例外でもキャッチされます。 -
print('Goodbye, world!')が実行されます。この行では、"Goodbye, world!"というメッセージが表示されます
※KeyboardInterruptが発生しましたが、それに対応する具体的な例外処理は行われていません。そのため、exceptブロック内のコードが実行され、"Goodbye, world!"というメッセージが表示されます。
※なお、exceptブロックで例外の種類を指定していないため、どの例外でもキャッチされます。ただし、一般的には特定の例外をキャッチするように指定することが推奨されます。
■ 次の実行結果を求めよ。
with.py
クリーンアップ動作を定義してあるオブジェクトに対して、
クリーンアップ動作を保証した形で利用するための構文で適切なものはどれか。
# with