Pythonの予約語「except」の解説
exceptとは何か
exceptは、Pythonの例外処理に使用される予約語で、プログラム実行中に発生するエラー(例外)を捕捉して適切に処理するために使われます。except
はtry
ブロックと共に使用され、try
ブロック内で例外が発生した場合、その例外に対して適切な処理を行うことができます。
exceptの基本的な使い方
以下は、except
を使って例外処理を行う基本的な例です。
try:
x = 10 / 0
except ZeroDivisionError:
print("ゼロで割ることはできません")
この例では、10 / 0
という計算を行い、ZeroDivisionError
が発生します。except
ブロックは、この特定のエラーを捕捉して、「ゼロで割ることはできません」というメッセージを表示します。
複数の例外を処理する
except
は複数の例外を処理することができます。それぞれの例外に対して別々の処理を指定することが可能です。
try:
value = int("abc")
except ValueError:
print("無効な数値です")
except TypeError:
print("型が異なります")
この例では、文字列"abc"
を整数に変換しようとしていますが、ValueError
が発生します。except ValueError
がそのエラーを捕捉し、「無効な数値です」と表示します。
例外情報の取得
except
ブロックでは、発生した例外の詳細情報を変数に格納して処理することもできます。以下は、例外オブジェクトを使った例です。
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"エラーが発生しました: {e}")
このコードでは、ZeroDivisionError
の詳細なエラーメッセージをe
という変数に格納し、それを利用してエラーメッセージを表示しています。例外オブジェクトを使用することで、発生したエラーの詳細な情報を取得できます。
例外の種類に応じた処理
Pythonにはさまざまな種類の例外があり、それぞれの例外に応じて異なる処理を行うことが可能です。以下は、異なる種類の例外に対する処理をまとめた表です。
例外 | 説明 |
---|---|
ZeroDivisionError |
ゼロで除算しようとしたときに発生する例外 |
ValueError |
無効な値を操作しようとしたときに発生する例外 |
TypeError |
無効な型を操作しようとしたときに発生する例外 |
すべての例外をキャッチする
特定の例外ではなく、すべての例外をキャッチしたい場合は、except Exception:
を使用します。この方法では、発生したすべての例外を捕捉して処理することができます。
try:
result = 10 / 0
except Exception as e:
print(f"予期しないエラーが発生しました: {e}")
このコードでは、すべての種類の例外を捕捉し、エラーメッセージを表示します。Exception
はPythonにおけるすべての例外の基本クラスです。
elseとfinallyの組み合わせ
except
ブロックに加えて、else
やfinally
ブロックも組み合わせて使用することができます。
else
: 例外が発生しなかった場合に実行されるコードfinally
: 例外の有無にかかわらず、必ず実行されるコード
try:
result = 10 / 2
except ZeroDivisionError:
print("ゼロで割ることはできません")
else:
print(f"計算結果: {result}")
finally:
print("このメッセージは常に表示されます")
このコードでは、計算が正常に行われるため、else
ブロックが実行され、「計算結果: 5.0」が表示されます。finally
ブロックは例外の有無に関わらず必ず実行され、「このメッセージは常に表示されます」が出力されます。
まとめと注意点
except
はtry
ブロックと共に使用され、例外を処理します。- 複数の例外を処理する場合、複数の
except
ブロックを使うことができます。 except Exception
を使うことで、すべての例外をキャッチできますが、具体的な例外を処理するほうが一般的です。else
やfinally
をtry
–except
と組み合わせることで、柔軟な例外処理を行うことができます。- 適切な例外処理を行うことで、プログラムが予期せぬエラーで停止するのを防ぎ、安定した動作が可能になります。