カテゴリ: Python 更新日: 2026/06/18

Pythonの例外処理をやさしく解説!初心者でもわかるtry-exceptの基本と使い方

Pythonの例外処理(try-except)の基本と書き方を解説
Pythonの例外処理(try-except)の基本と書き方を解説

先生と生徒の会話形式で理解しよう

生徒

「Pythonでプログラムが途中で止まらないようにする方法ってありますか?何か間違うとすぐに赤いエラー画面になってしまうんです。」

先生

「Pythonでは、例外処理という仕組みを使うことで、エラーが起きてもプログラム全体が止まらないようにできます。特に初心者がつまずきやすい部分なので、今日はゆっくり解説していきますね。」

生徒

「例外処理って何ですか?難しそうな名前ですけど、どういうときに使うものなんですか?」

先生

「例外処理というのは、プログラムの途中で問題が起きたときに、その問題をキャッチして代わりの処理に切り替える仕組みのことです。Pythonではtry-exceptという文法を使います。まずは基本から見ていきましょう。」

1. Pythonの例外処理(try-except)とは?仕組みをわかりやすく解説

1. Pythonの例外処理(try-except)とは?仕組みをわかりやすく解説
1. Pythonの例外処理(try-except)とは?仕組みをわかりやすく解説

Pythonの例外処理とは、プログラムの実行中に発生する「予期せぬエラー(例外)」を事前に想定し、プログラムが強制終了しないように制御する仕組みのことです。通常、Pythonはコードを上から順に実行しますが、途中で計算ミスや読み込みミスが発生すると、その瞬間に動作が止まり、不親切なエラーメッセージが表示されてしまいます。

これを防ぐのが例外処理の役割です。プログラミング未経験の方でもイメージしやすいよう、身近な例で考えてみましょう。

身近な例:自動販売機

150円の飲み物を買おうとしたとき、100円玉を入れるつもりが間違えて「ボタン電池」を入れてしまったとします。もしこの自販機に例外処理がなければ、機械は混乱してフリーズし、二度とお釣りも出せなくなるかもしれません。

しかし、実際の自販機は「これはお金ではありません」とエラーを検知し、それを返却口に戻して、そのまま次の操作を受け付けてくれます。これが、プログラムにおける「エラーをキャッチして安全に処理を続ける」という考え方です。

より具体的に、Pythonで「数値以外が入力された場合」の簡単な挙動を比較してみましょう。


# 例外処理がない場合:文字を入力するとエラーで強制終了する
age = int(input("年齢を数字で入力してください: "))
print(f"{age}歳ですね、承知いたしました。")

上記のコードでは、ユーザーが「二十歳」と漢字で入力した瞬間、プログラムはエラーを吐いて止まってしまいます。これをtry-exceptで囲むことで、「エラーが起きたら『数字で入れてね』と優しく教えてあげる」という親切なプログラムに作り変えることができるのです。

例外処理をマスターすることは、ユーザーにとって使いやすく、かつ「壊れにくい」信頼性の高いシステムを作るための第一歩となります。

2. try-exceptの基本的な書き方と構文ルール

2. try-exceptの基本的な書き方と構文ルール
2. try-exceptの基本的な書き方と構文ルール

Pythonで例外処理を行うための最も基本的で強力なツールが「try-except文」です。書き方は非常にシンプルで、エラーが起きそうな場所をあらかじめ予測して、あみだくじのように処理を分岐させるイメージで記述します。

try-exceptの基本構造
  • tryブロック: 「まずはこれをやってみて!」という本来の処理を書く。
  • exceptブロック: 「もしエラーが出たら、こっちの処理に切り替えて!」という予備の動きを書く。

プログラミング未経験の方でも直感的に理解できるよう、具体的なサンプルコードで見てみましょう。今回は「入力した文字を数字に変換する」という、エラーが起きやすい処理を例にします。


try:
    # ユーザーに入力を促す(ここで「あ」などの文字を入れるとエラー予備軍に!)
    val = input("あなたのラッキーナンバー(数字)を入力してください:")
    number = int(val)
    print(f"あなたの番号は {number} ですね!")
except ValueError:
    # 数字以外が入力されて「ValueError」が出た時だけ、ここが実行される
    print("エラー:数字以外の文字が入力されました。半角数字で入力してください。")

このプログラムを実行した際、正しく「7」と入力すれば try の中身が最後まで実行されます。しかし、「ラッキー」などの文字列を入力してしまうと、通常はプログラムが強制終了(クラッシュ)してしまいます。

そこで except ValueError: の出番です。この一文があるおかげで、Pythonは「あ、これは想定内のミスだね」と判断し、プログラムを止めずに優しいエラーメッセージを表示して、安全に処理を続行することができるのです。

3. よくある例外の種類と初心者が注意すべきポイント

3. よくある例外の種類と初心者が注意すべきポイント
3. よくある例外の種類と初心者が注意すべきポイント

Pythonには多くの「例外(エラーの種類)」が定義されていますが、初心者が最初に出会うエラーはだいたい決まっています。これらを事前に知っておくと、デバッグ(間違い探し)のスピードが格段に上がります。

代表的な3つの例外を、具体的なシチュエーションと一緒に見てみましょう。

エラー名(例外名) どんな時に起こる? よくある原因
ZeroDivisionError 0で割り算をした 計算式の分母が0になってしまった
ValueError 値が不適切 数字を入れる場所に文字を入力した
IndexError リストの範囲外を指定 3つしかないデータに5番目を求めた

例えば、算数のテストをプログラムで作ったとします。ユーザーがうっかり「0」で割るような入力をしても、プログラムがパニックにならないように守ってあげるのがプログラマの優しさです。


try:
    # 割り算のシミュレーション
    bunshi = 10
    bunbo = 0  # もしユーザーが0を入力したら...
    result = bunshi / bunbo
    print(f"答えは {result} です")
except ZeroDivisionError:
    # 0で割った時専用のメッセージを表示
    print("【エラー通知】数字を0で割ることは数学的にできません。別の数字を試してください。")

このように、「どんな失敗が起きそうか」を予測して、そのエラー名(ZeroDivisionErrorなど)をピンポイントで指定するのがコツです。闇雲にエラーを隠すのではなく、何が原因で止まりそうになったのかを、ユーザーや自分自身に分かりやすく伝えてあげることが、脱・初心者の第一歩になります。

4. 複数のエラー(例外)を同時に処理する方法

4. 複数のエラー(例外)を同時に処理する方法
4. 複数のエラー(例外)を同時に処理する方法

実際のプログラミングでは、「ファイルが開けない」「計算ができない」「入力された文字が違う」など、一つの処理に対して複数のエラーが同時に予想される場面がよくあります。Pythonでは、exceptを並べて書くことで、発生したエラーの種類(例外型)に合わせた「専用の解決策」を個別に用意することが可能です。

ここがポイント!

上から順番にエラーをチェックしていくため、複数の可能性があっても、最初に当てはまった except ブロックの処理だけが実行されます。これにより、網の目を細かくするように、きめ細やかなユーザーフォローが可能になります。

例えば、「ファイルから数字を読み込んで計算する」というプログラムを考えてみましょう。ここでは「ファイルがない(FileNotFoundError)」場合と、「中身が数字ではなかった(ValueError)」場合の2パターンを想定して対策します。


try:
    # 1. ファイルを開く(ファイルが存在しないリスクがある)
    with open("data.txt", "r", encoding="utf-8") as file:
        content = file.read()
        
        # 2. 読み込んだ文字を整数に変換する(数字以外が書かれているリスクがある)
        number = int(content)
        print(f"読み込んだ数値は {number} です。")

except FileNotFoundError:
    # ファイルが見つからなかった時専用の案内
    print("【エラー】『data.txt』が見つかりませんでした。ファイル名や場所を確認してください。")

except ValueError:
    # 数字に変換できないデータだった時専用の案内
    print("【エラー】ファイルの中に数字以外の文字が含まれていたため、計算できません。")

except Exception as e:
    # 上記以外、想定外のトラブルが起きた時の「お守り」
    print(f"予期せぬエラーが発生しました:{e}")

このように、問題の切り分けを明確にすることで、利用者は「なぜエラーになったのか」を正確に知ることができます。単に「エラーです」と表示するよりも、具体的な改善策(ファイル名を確認して、など)を提示できるのが、質の高い例外処理のメリットです。

なお、最後に except Exception: を添えておくと、万が一自分が予想していなかった珍しいエラーが起きた際も、プログラムが強制終了せずに踏みとどまってくれるので安心です。

5. finallyを使えば必ず実行される処理も書ける

5. finallyを使えば必ず実行される処理も書ける
5. finallyを使えば必ず実行される処理も書ける

finallyというキーワードを使うことで、エラーが起こっても起こらなくても必ず実行したい処理を書くことができます。たとえば、ファイルを開いたら必ず閉じたい場合や、接続したネットワークを確実に切断したい場合などに使われます。


try:
    file = open("sample.txt", "r")
    data = file.read()
    print(data)
except FileNotFoundError:
    print("ファイルが存在しません。")
finally:
    print("処理が完了しました。")

この仕組みを覚えておくと、プログラムの後片付けが確実にできるようになります。

6. 初心者が知っておくと便利なtry-exceptの応用

6. 初心者が知っておくと便利なtry-exceptの応用
6. 初心者が知っておくと便利なtry-exceptの応用

例外処理は、使い方によってプログラムの安全性を大きく向上させることができます。たとえば、ユーザー入力のチェック、ファイル読み書き、ネットワーク通信など、失敗する可能性のある操作には必ず例外処理を組み込む習慣をつけましょう。

また、例外処理は「プログラムが間違っている部分を隠すためではなく、安全に案内を出すための仕組み」という考え方も重要です。過剰にtry-exceptを使うと逆に不具合が見えなくなることがあるため、どこに使うべきかを考える力も少しずつ身につけていきましょう。

まとめ

まとめ
まとめ

Pythonの例外処理は、初心者がつまずきやすいエラーへの理解を深めながら、安全にプログラムを動かすための重要な仕組みです。とくにtry-exceptは、入力チェックやファイル操作など失敗の起こりやすい処理に欠かせない構文として広く使われています。例外処理を自然に使えるようになると、プログラム全体の安定性が高まり、複雑な処理にも柔軟に対応できるようになります。とくにエラーの種類ごとにexceptを分ける方法や、finallyで後片付けを確実に行う設計は、実務でも常に活用される考え方です。さらに、例外処理を適切に配置することで、ファイル読み込み・ユーザー入力・ネットワーク通信など、あらゆる場面で「思いどおりに動かないときの対処」ができるようになり、プログラムの品質が大きく向上します。

また、例外処理は単にエラーを回避するだけでなく、「ユーザーにわかりやすいメッセージを返す」ための大切な機能でもあります。PythonではValueError、ZeroDivisionError、FileNotFoundErrorなどさまざまな例外が用意されているため、起きた問題の種類に応じて適切な案内を行うことができます。たとえば、数字入力を求める画面では「数値ではありません」と伝え、ファイルが見つからないときには「ファイルが存在しません」と知らせることで、ユーザー体験が大きく向上します。こうした細やかな配慮を実現するのが例外処理の魅力のひとつです。

最後に、例外処理の基本的な構造をしっかり理解しておくことが、エラーに強いPythonコードを書く第一歩となります。tryブロックでは「試して実行する処理」、exceptブロックでは「問題が起きた場合の対応」、そしてfinallyでは「エラーの有無にかかわらず行う後処理」を記述します。この三つの役割を整理すると、プログラムの見通しが非常によくなり、初心者にありがちな「何が原因で止まったのかわからない」という状態も避けやすくなります。例外処理はPython学習の基礎でありながら、応用力が問われる奥深い機能なので、実際に手を動かしながら少しずつ慣れていくことが大切です。

サンプルプログラムで例外処理の流れを確認


def load_number_from_file(path):
    try:
        f = open(path, "r")
        data = f.read()
        value = int(data)
        print("読み込んだ数値:", value)
    except FileNotFoundError:
        print("指定されたファイルが見つかりませんでした。")
    except ValueError:
        print("ファイルの中の値を数字として変換できませんでした。")
    finally:
        print("読み込み処理を終了します。")

このサンプルでは、ファイルが存在しない場合と、中身が数字ではない場合を分けて処理しています。初心者でも理解しやすいように構造が整理されており、例外がどのようにキャッチされ、どの処理が必ず実行されるのかをはっきり確認できます。try-except-finallyの流れを繰り返し読むことで、Pythonの例外処理に対する理解が深まり、より実践的なコード設計につながります。

先生と生徒の振り返り会話

先生

「今日の勉強では、例外処理の基本から応用までしっかり整理できましたね。try-exceptの流れがつかめると、プログラムが一気に安定しますよ。」

生徒

「はい!特に、どんなエラーが起きるかを考えてexceptを分けることで、プログラムがすごく読みやすくなると感じました。finallyの使い方も便利ですね。」

先生

「その調子です。例外処理は理解すればするほど使いやすくなるので、今日学んだ内容をいろいろな場面で試してみてください。」

生徒

「はい!エラーに強いPythonプログラムを書けるように、これからも頑張ります!」

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
Python の例外処理の記事一覧へ
新着記事
New1
PHP
PHPのforeachループを完全ガイド!初心者でもわかる配列・連想配列の処理
New2
Python
Pythonでリストを分割する方法(スライス / split() / itertools)
New3
Python
Pythonのクロージャー(Closure)とは?関数内関数とnonlocalの活用
New4
Python
Pythonのエラーメッセージの読み方!よくあるエラーと解決方法
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPの認証機能を実装する方法!初心者でもわかるログイン・ログアウト処理の基本
No.2
Java&Spring記事人気No2
PHP
PHPでカウントダウンタイマーを作る方法!初心者向けにやさしく解説
No.3
Java&Spring記事人気No3
PHP
PHP の文字列のフォーマット(sprintf, printf)
No.4
Java&Spring記事人気No4
Python
Pythonで経過時間を計測する方法を完全解説!初心者でもわかる time.perf_counter() と time.sleep()
No.5
Java&Spring記事人気No5
Python
Pythonのリストを反転(逆順)する方法を解説!初心者向けにreverseメソッドとスライス表記[::−1]を丁寧に説明
No.6
Java&Spring記事人気No6
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.7
Java&Spring記事人気No7
Python
Pythonのクロージャー(Closure)とは?関数内関数とnonlocalの活用
No.8
Java&Spring記事人気No8
PHP
PHPのセキュリティチェックリストを丁寧に解説!初心者でも理解できる安全対策ガイド