except | 例外キャッチ | Python予約語 徹底解説 使い方と注意点

現在作成中です。今後加筆修正してまいります。
スポンサーリンク
スポンサーリンク

Pythonの予約語「except」の解説

exceptとは何か

exceptは、Pythonの例外処理に使用される予約語で、プログラム実行中に発生するエラー(例外)を捕捉して適切に処理するために使われます。excepttryブロックと共に使用され、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ブロックに加えて、elsefinallyブロックも組み合わせて使用することができます。

  • else: 例外が発生しなかった場合に実行されるコード
  • finally: 例外の有無にかかわらず、必ず実行されるコード
try:
    result = 10 / 2
except ZeroDivisionError:
    print("ゼロで割ることはできません")
else:
    print(f"計算結果: {result}")
finally:
    print("このメッセージは常に表示されます")

このコードでは、計算が正常に行われるため、elseブロックが実行され、「計算結果: 5.0」が表示されます。finallyブロックは例外の有無に関わらず必ず実行され、「このメッセージは常に表示されます」が出力されます。

まとめと注意点

  • excepttryブロックと共に使用され、例外を処理します。
  • 複数の例外を処理する場合、複数のexceptブロックを使うことができます。
  • except Exceptionを使うことで、すべての例外をキャッチできますが、具体的な例外を処理するほうが一般的です。
  • elsefinallytryexceptと組み合わせることで、柔軟な例外処理を行うことができます。
  • 適切な例外処理を行うことで、プログラムが予期せぬエラーで停止するのを防ぎ、安定した動作が可能になります。