← トップ
13 / 20

13. エラー処理(try/except)

CONCEPT

例外処理exception handling(エクセプション)。エラーの捕捉は、プログラムがエラーで止まらないようにする仕組みです。「もしここで失敗したら、こう対応する」という保険のようなものです。車のシートベルトのような役割です。

📍 使い道: API呼び出し失敗時にプログラムが落ちないよう保護
COMMON MISTAKES — よくある間違い
except を裸で書くexcept: だけだと全エラーを捕捉してしまい、バグの原因を見つけにくくなります。except ValueError: のように具体的に。
例外を無視して pass だけ書くexcept: pass はエラーを隠してしまいます。最低でもログ出力やユーザーへの通知をしましょう。
コードを1行ずつ実行してみよう
example.pyPython
1process_payment("A001", 1500)# process_payment("A001", 1500) を呼び出し。amount=1500 は 0より大きいのでOK
2 try: amount = 1500 > 0 OK# try ブロック内: amount > 0 を確認 → True なので次へ
3 print("注文A001: ¥1500を決済しました")# "注文A001: ¥1500を決済しました" を表示。エラーなし
4 finally: print("決済処理を終了します")# finally: "決済処理を終了します" を表示(必ず実行)
5process_payment("A002", -100)# process_payment("A002", -100) を呼び出し。amount=-100 は0以下なのでValueError発生 → "エラー: 金額が0以下です" を表示 → finally実行
« 次の行 » ボタンを押して実行を開始
VARIABLES
実行すると変数の状態が表示されます
try-exceptは「エラーが起きてもプログラムを止めない」仕組みです。 tryの中でエラーが起きたら、exceptの中身が実行されます。 「もしうまくいかなかったら、こうする」という保険です。
📚 読み方ガイド
コード読み方
try:「試しにやってみる」ブロックの開始
except ValueError as e:ValueError が出たらここに来る
except Exception as e:その他のエラーも全部拾う
finally:成功・失敗に関わらず必ず最後に実行
KEY POINT

例外処理exception handling(エクセプション)。エラーの捕捉では、try は「試しに実行する」範囲の開始。except は「もしエラーが起きたら」の対処法。finally は成功しても失敗しても必ず最後に実行される。エラーの種類ごとに処理を分けられる。

確認問題
1何が表示されるか順番に答えてください
try: result = 10 / 0 except ZeroDivisionError: print("ゼロで割ることはできません") finally: print("計算終了")
1行目: "ゼロで割ることはできません"(10/0でZeroDivisionErrorが発生しexceptへ飛ぶ)2行目: "計算終了"(finallyは必ず実行される)
2load_user_config("missing.json") の結果は?
# 例2のコードを参照 def load_user_config(filepath): try: with open(filepath, "r") as f: config設定(英: configuration) = json.load(f) return config except FileNotFoundError: print("設定ファイルが見つかりません。初期設定を使います") return config設定(英: configuration){"theme": "light", "lang": "ja"}
"設定ファイルが見つかりません。初期設定を使います" と表示され、{"theme": "light", "lang": "ja"} が返ります。FileNotFoundError が発生して except ブロックが実行されるためです。
3finally ブロックはいつ実行されるか
成功したときも、エラーが起きたときも、必ず実行されます。リソースの後処理(ファイルを閉じる、DB接続を切断する等)に使われます。
CHEAT SHEET — まとめ
3行で分かる
  • エラーでプログラムが止まらないようにする「保険」
  • try で試し、except で失敗時の対応を書く
  • finally で必ず実行・raise で意図的にエラーを出せる
例外処理