← トップ
10 / 10

10. 例外の種類(よく見る例外まとめ)

CONCEPT

プログラムが実行中に「困ったことが起きた」と報告するのが例外exception(エクセプション)。エラーの種類です。Pythonには色々な種類の例外があり、それぞれ「何が起きたか」を知らせてくれます。

📍 使い道: 独自のエラーメッセージを作って分かりやすくする
COMMON MISTAKES — よくある間違い
Exception を直接継承するカスタム例外は ValueError や RuntimeError など、より具体的な例外を継承するのが推奨されます。
raise で文字列を投げるraise "エラー" はエラー。raise ValueError("エラー") のように例外クラスのインスタンスを投げます。
コードを1行ずつ実行してみよう
example.pyPython
1try:# try ブロックに入る(エラーが起きるか監視する)
2 result = 10 / 0# 10 / 0 を実行 → ZeroDivisionError が発生!
3except ZeroDivisionError:# except ZeroDivisionError でキャッチ
4 print("0で割ることはできません")# エラーメッセージを表示 → プログラムは続行
« 次の行 » ボタンを押して実行を開始
VARIABLES
実行すると変数の状態が表示されます
カスタム例外は「自分で定義したエラー」です。 class MyError(Exception): と書けば独自のエラー型が作れます。 「何が悪かったか」を具体的に伝えるために使います。
📚 読み方ガイド
例外名意味
ValueError値がおかしいint("abc")
TypeError型が違う"2" + 3
NameError名前が見つからないprint(x) (x未定義)
IndexError範囲外list[10] (長さ3)
KeyErrorキーがないdict["x"]
ZeroDivisionError0で割った1 / 0
FileNotFoundErrorファイルがないopen("x.txt")
KEY POINT

try / except で囲んで例外exception(エクセプション)。エラーの種類エラーを防ぐ。except Exception as e: で全般的な例外を受け取る。raise で自分から例外を出すこともできる。finally で必ず実行する処理を書く。

確認問題
1次のコードはどの例外が起きる?
data = [1, 2, 3] print(data[5])
IndexError です。リストの長さは3なのにインデックス5にアクセスしようとしているため、「範囲外」の例外exception(エクセプション)。エラーの種類エラーになります。
2try / except を使って int("hello") のエラーを防いで
# ヒント: ValueError をキャッチする
try:\n number = int("hello")\nexcept ValueError:\n print("数値に変換できません")\n\n"hello" は数値に変換できないため ValueError が発生し、except ブロックが実行されます。
3raise の役割は何?
age = 15 if age < 18: raise ValueError("18歳未満は登録できません")
raise は自分から例外を発生させる命令です。プログラムの条件に合わないときに、エラーメッセージ付きで例外exception(エクセプション)。エラーの種類を出して処理を中断できます。
CHEAT SHEET — まとめ
3行で分かる
  • 独自のエラー型を作って「何が起きたか」を明示できる
  • Exception を継承して class で定義
  • エラーの意図を分かりやすく伝えられる
カスタム例外