はじめに
Pythonでプログラムを作っていると、思わぬエラーに特定の処理をしたい場合があります。Pythonには「try/except」という便利な仕組みがあり、エラーの発生でexcept処理を行うことができます。
この記事では、このtry/exceptの使い方をわかりやすく解説します。
エラー処理をキャッチしよう
Pythonで例外処理を行うための基本構文が「try/except」です。基本的な構文は次のとおりです:
try:
実行したいコード
except:
エラー発生時のコード
具体例でエラー処理を身につけるために、例えば以下のようなケースをみてみましょう。
- ファイルが存在しないのに開こうとする
- ゼロで割り算をしようとする
- リストの範囲外にアクセスしようとする
具体例1: ファイルが存在しない場合
try:
file = open("存在しないファイル.txt", "r")
content = file.read()
file.close()
except FileNotFoundError:
print("ファイルが見つかりません。ファイル名を確認してください。")
具体例2: ゼロ除算の場合
try:
num1 = 10
num2 = 0
result = num1 / num2
print(f"結果: {result}")
except ZeroDivisionError:
print("0で割ることはできません。除数を確認してください。")
result = 0
print(f"代わりに結果を {result} としました。")
具体例3: リストの範囲外アクセスの場合
try:
my_list = [1, 2, 3]
index = 10
value = my_list[index]
print(f"{index}番目の要素: {value}")
except IndexError:
print(f"リストのインデックス{index}は範囲外です。リストの長さは{len(my_list)}です。")
value = my_list[-1] if my_list else None
print(f"代わりに最後の要素を使用します: {value}")
エラーメッセージを取得する
例外オブジェクトを変数として取得することで、エラーメッセージを取得してコンソールに表示することもできます。
try:
num1 = 10
num2 = 0
result = num1 / num2
except ZeroDivisionError as e:
print(f"エラーが発生しました: {e}")
elseとfinallyを使用する
try、exceptの構文では、elseとfinallyというブロックも使用できます。
・ elseブロック:try内のコードがエラーなく実行された場合のみ実行されます。
・ finallyブロック:エラーの有無にかかわらず、最後に必ず実行されます。ファイルのクローズやリソースの解放などによく使われます。
try:
num1 = 10
num2 = 2
result = num1 / num2
except ZeroDivisionError:
print("ゼロで割ることはできません。")
else:
print(f"計算結果: {result}")
finally:
print("計算処理を終了します。")