【Python入門】例外処理

Python

1.例外処理(エラー処理)とは

例外処理とは、プログラム中でエラーが起きても強制終了させず、代わりの処理を実行する仕組みです。
<例>

  • ゼロで割ってしまった
  • ファイルが見つからない
  • 入力が数字ではない
  • ネット通信がタイムアウトした

こういう「予期せぬエラー」を安全に処理できるようにするのが 例外処理 です。

2.例外処理の基本形

try:
    実行する処理
except エラーの種類:
    エラー時の処理

✔ 例:0 で割った場合のエラーを処理

try:
    x = 10 / 0
except ZeroDivisionError:
    print("0 で割ることはできません")

ZeroDivisionError が発生すると except に飛ぶ。

3.except は複数書ける

try:
    num = int(input("数字を入力: "))
    result = 10 / num
except ValueError:
    print("数字を入力してください。")
except ZeroDivisionError:
    print("0 は入力できません。")

最初に該当したexceptで処理するため順番注意。

4.except をまとめる(複数の例外を一度に処理)

try:
    x = int("abc")
except (ValueError, TypeError):
    print("型に問題があります")

5.すべての例外をまとめて受ける(最後の手段)

try:
    risky()
except Exception as e:
    print("エラー発生:", e)

初心者が最初に使うなら便利。
ただし原因がわからなくなるため、本格的なプログラムでは注意。

6.else(エラーが“起きなかった場合”の処理)

try:
    num = int(input("数字を入力: "))
except ValueError:
    print("数字を入力してください")
else:
    print("成功!", num)

else は「try が正常に完了したとき」だけ実行。

7.finally(エラーの有無に関わらず必ず実行)

try:
    f = open("test.txt", "r")
except FileNotFoundError:
    print("ファイルなし")
finally:
    print("必ず実行される処理")

代表的な用途:

  • ファイルを閉じる
  • ネット接続を切断する
  • ロックを解除する

8.よく使う例外一覧

例外名説明
ValueError型はOKだが値が不正
TypeError型が不正
ZeroDivisionError0 で割った
FileNotFoundErrorファイルがない
KeyError辞書にキーがない
IndexErrorリスト範囲外
ImportErrorモジュール読み込み失敗

9.実践例

✔ :安全にファイルを読む

try:
    with open("data.txt", "r", encoding="utf-8") as f:
        text = f.read()
except FileNotFoundError:
    print("data.txt が見つかりません")
else:
    print(text)

実践例:ユーザー入力の安全チェック

while True:
    try:
        age = int(input("年齢を入力: "))   #intでキャストできないとエラーが発生
        break
    except ValueError:
        print("数字を入力してください")
print("年齢は", age)

“正しい入力が来るまで繰り返す” 典型パターン。

タイトルとURLをコピーしました