PythonでIndexError例外をキャッチする方法をわかりやすく解説
Pythonでは、リストやタプルなどのシーケンス型の要素に、存在しない範囲のインデックスでアクセスしようとすると、IndexError例外が発生します。この例外はtry〜except文を使うことで適切に捕捉(キャッチ)でき、プログラムが異常終了するのを防ぐことができます。
IndexErrorが発生する例
以下のコードは、5つの要素しか持たないリストに対して、インデックス6(7番目の要素)にアクセスしようとしているため、IndexErrorが発生します。
my_list = [3, 7, 9, 4, 6] print(my_list[6])
try〜exceptでIndexErrorをキャッチする方法
次のようにコードを書き換えると、発生した例外を捕捉し、その内容と種類を確認できます。
import sys
try:
my_list = [3, 7, 9, 4, 6]
print(my_list[6])
except IndexError as e:
print("エラー内容:", e)
print("例外の種類:", type(e).__name__)実行結果
エラー内容: list index out of range 例外の種類: IndexError
コードのポイント
- tryブロック:例外が発生する可能性のある処理を記述します。
- except IndexError as e:IndexErrorが発生した場合のみ処理され、例外オブジェクトが変数eに代入されます。
- e:エラーメッセージ(「list index out of range」など)を保持しています。
- type(e).__name__:発生した例外のクラス名を取得できます。
補足:IndexErrorを未然に防ぐには
例外処理だけでなく、アクセス前にインデックスが有効な範囲内かどうかを確認することでも、IndexErrorを回避できます。
index = 6
if index < len(my_list):
print(my_list[index])
else:
print("指定されたインデックスは範囲外です")このように、len()関数でリストの長さを取得して比較すれば、安全に要素へアクセスできます。状況に応じて例外処理と事前チェックを使い分けることが、堅牢なPythonコードを書くためのポイントです。
-
PythonでIOError例外をキャッチする方法【初心者向けにわかりやすく解説】
IOError例外とは? IOError(入出力エラー)は、入出力操作が失敗したときに発生する例外です。代表的な例としては、存在しないファイルをopen()関数で開こうとした場合や、OSに関連するエラーが発生した場合などが挙げられます。 なお、Python 3ではIOErrorはOSErrorの別名(エイリアス)となっており、どちらの名前で捕捉しても同じ例外を受け取ることができます。 try-exceptブロックで例外を処理する ファイルを開く処理などをtryブロック内に記述すると、入出力例外が発生した際にexceptブロックで適切に処理できます。以下に具体的なコード例を示します。 コード例(
-
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_i