Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでKeyError例外をキャッチする方法をわかりやすく解説

Pythonでは、辞書(dict)に存在しないキーを使って値へアクセスしようとすると、KeyError例外が発生します。この記事では、try-except文を使ってKeyErrorをキャッチし、例外の種類や詳細情報を確認する方法を解説します。

KeyErrorが発生する仕組み

次のコードは、辞書に存在しないキー 'c' で値を取得しようとしているため、KeyErrorが発生します。sys.exc_info() を使うと、発生した例外の型などの情報を取得できます。

import sys

try:
    s = {'a': 5, 'b': 7}['c']
except:
    print(sys.exc_info())

実行結果

(<class 'KeyError'>, KeyError('c'), <traceback object at 0x0000000003203748>)

出力には、例外の型(KeyError)例外オブジェクト(見つからなかったキー名 'c')トレースバックオブジェクト の3つの情報がタプル形式で格納されています。これにより、どのキーが原因で例外が発生したのかを特定できます。

より実践的な例外処理の書き方

sys.exc_info() の代わりに、as 句を使うと、より読みやすくモダンなコードになります。例外オブジェクトから直接キー名を取得できます。

try:
    s = {'a': 5, 'b': 7}['c']
except KeyError as e:
    print(f"キー '{e}' は辞書に存在しません")

get()メソッドでKeyError自体を回避する

そもそも例外を発生させたくない場合は、get() メソッドが便利です。キーが存在しない場合でも、指定したデフォルト値を返すため、プログラムが中断されません。

s = {'a': 5, 'b': 7}.get('c', 0)
print(s)  # 0 が出力される

まとめ

  • 存在しないキーで辞書にアクセスすると、KeyError例外が発生する
  • try-except文でキャッチし、sys.exc_info() で例外の型や詳細情報を取得できる
  • except KeyError as e の形式を使うと、より簡潔で可読性の高いコードになる
  • get() メソッドを使えば、デフォルト値を返して例外の発生自体を防げる
  1. PythonでIOError例外をキャッチする方法【初心者向けにわかりやすく解説】

    IOError例外とは? IOError(入出力エラー)は、入出力操作が失敗したときに発生する例外です。代表的な例としては、存在しないファイルをopen()関数で開こうとした場合や、OSに関連するエラーが発生した場合などが挙げられます。 なお、Python 3ではIOErrorはOSErrorの別名(エイリアス)となっており、どちらの名前で捕捉しても同じ例外を受け取ることができます。 try-exceptブロックで例外を処理する ファイルを開く処理などをtryブロック内に記述すると、入出力例外が発生した際にexceptブロックで適切に処理できます。以下に具体的なコード例を示します。 コード例(

  2. Pythonで例外の詳細情報(種類・メッセージ・行番号)を取得する方法

    Pythonの例外情報を取得するとはPythonのコードが例外(Exception)をスローした場合、それを捕捉して、例外の種類、エラーメッセージ、トレースバックを表示できます。さらに、例外が発生したファイル名や行番号といった情報もPythonスクリプト内で取得することが可能です。sys.exc_info()で取得できる3つの要素例外発生時には、type(型)、value(値)、traceback(トレースバック)という3つのパラメータからエラーの詳細を把握できます。type: 発生した例外の種類(クラス)を示します。value: エラーメッセージそのものが格納されています。traceback