9. 例外処理(try-except 文)¶
9.1 例外処理とは¶
プログラムを実行中に予期しないエラーが発生することがあります。これを例外
と呼びます。例外処理は、プログラムがエラーで停止してしまうことを防ぎ、エラー発生時に特定の処理を行えるようにするための仕組みです。
Python では、try-except
文を使って例外処理を行います。
9.2 try-except 文の基本構造¶
以下のような基本構造になっています。
try
ブロック内に例外が発生する可能性のあるコードを記述します。except
で特定の例外を捕捉し、処理を記述します。
9.3 具体例¶
9.3.1 ゼロ除算の例外処理¶
例えば、ゼロ除算の際にはZeroDivisionError
という例外が発生します。
上記のコードでは、10 を 0 で割るとZeroDivisionError
が発生します。しかし、except
部分でこの例外を捕捉し、エラー内容を表示します。
9.3.2 ファイル読み込みの例外処理¶
存在しないファイルを読み込もうとするとFileNotFoundError
が発生します。
try:
with open('nonexistent_file.txt', 'r') as f:
content = f.read()
except FileNotFoundError as e:
print(f"ファイルが見つかりません: {e}")
この例では、存在しないファイルを開こうとするためFileNotFoundError
が発生しますが、except
内でそのエラーを処理しています。
9.4 複数の例外を処理する¶
複数の例外をそれぞれ異なる方法で処理することもできます。
try:
num = int("a") # 文字列を整数に変換
result = 10 / num
except ValueError as e:
print(f"整数への変換に失敗しました: {e}")
except ZeroDivisionError as e:
print(f"ゼロで割ろうとしました: {e}")
この例では、ValueError
とZeroDivisionError
をそれぞれ異なる方法で処理します。
9.5 すべての例外を捕捉する¶
全ての例外を捕捉したい場合は、except Exception
を使用しますが、具体的な例外を上で捕捉してから使用するのがベストプラクティスです。
9.6 finally ブロック¶
finally
ブロックは例外の有無に関わらず、必ず実行されるコードを記述します。
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"エラー: {e}")
finally:
print("この処理は必ず実行されます")
練習課題¶
実際に、異なる種類の例外を試してみてください。自分のコードの中で、どのようにtry-except
を組み込めるか考えてみましょう。また、finally
ブロックがどのように動作するかも試してみると理解が深まります。