カテゴリ: Python 更新日: 2025/12/30

Pythonのtry-except-else-finallyの使い方!例外処理の詳細な制御を解説

Pythonのtry-except-else-finallyの使い方!例外処理の詳細な制御を解説
Pythonのtry-except-else-finallyの使い方!例外処理の詳細な制御を解説

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

生徒

「Pythonでエラーが出たときにプログラムを止めずに処理を続ける方法ってあるんですか?」

先生

「ありますよ。Pythonではtryexceptを使って、エラー(例外)が起きても安全に処理を続けることができます。」

生徒

「それって難しいんですか?初心者でも使えるようになりますか?」

先生

「もちろんです。実生活の例を交えながら、tryexceptelsefinallyの使い方をわかりやすく説明していきますね。」

1. 例外処理(えいがいしょり)ってなに?

1. 例外処理(えいがいしょり)ってなに?
1. 例外処理(えいがいしょり)ってなに?

Pythonでは、プログラムの途中で「エラー(例外)」が発生することがあります。たとえば、0で割り算しようとしたり、存在しないファイルを開こうとしたりする場合です。通常、こうしたエラーがあるとプログラムは止まってしまいます。

でも、現実の生活を想像してみてください。自動販売機にお金を入れて、ボタンを押したのにジュースが出てこないことがありますよね。そんなときでも、「おつりを返す」などの対処がされます。それが「例外処理」です。

Pythonでも、tryexceptを使えば、エラーが出たときの対応を自分で決めることができます。

2. try-exceptの基本的な使い方

2. try-exceptの基本的な使い方
2. try-exceptの基本的な使い方

tryブロックには「試しに実行するコード」、exceptブロックには「エラーが出たときの処理」を書きます。


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

上のコードでは、0で割る処理を試しています。普通ならエラーで止まりますが、exceptで対応することで、エラーメッセージを出すだけでプログラムは止まりません。

3. elseを使ってエラーがなかったときの処理を書く

3. elseを使ってエラーがなかったときの処理を書く
3. elseを使ってエラーがなかったときの処理を書く

elseブロックは、tryの中でエラーが発生しなかったときにだけ実行されます。


try:
    num = int(input("数字を入力してください: "))
except ValueError:
    print("数字以外が入力されました。")
else:
    print("入力された数字は", num, "です。")

たとえば上のコードでは、ユーザーの入力が数字でなかったらexceptが動きますが、数字だった場合はelseの中の処理が行われます。

4. finallyで最後に必ず行う処理を書く

4. finallyで最後に必ず行う処理を書く
4. finallyで最後に必ず行う処理を書く

finallyブロックは、エラーが起きても起きなくても、最後に必ず実行される処理を書くための場所です。


try:
    f = open("test.txt", "r")
    data = f.read()
except FileNotFoundError:
    print("ファイルが見つかりません。")
else:
    print("ファイルの内容を読み込みました。")
finally:
    print("処理が終了しました。")

このように、ファイルの読み込みが成功してもしなくても、「処理が終了しました。」は必ず表示されます。

5. try-except-else-finallyの全体構成を整理しよう

5. try-except-else-finallyの全体構成を整理しよう
5. try-except-else-finallyの全体構成を整理しよう

4つのブロックをすべて使った構成は以下のようになります。必要に応じて、elsefinallyは省略することもできます。


try:
    # エラーが起きそうな処理
    pass
except エラーの種類:
    # エラーが起きたときの処理
    pass
else:
    # エラーが起きなかったときの処理
    pass
finally:
    # 最後に必ず行いたい処理
    pass

どのブロックもインデント(字下げ)をそろえて書くことが大切です。

6. 複数の例外に対応するには?

6. 複数の例外に対応するには?
6. 複数の例外に対応するには?

exceptを複数使えば、異なる種類のエラーに対して別々の対応が可能です。


try:
    value = int("abc")
    result = 10 / value
except ValueError:
    print("数値に変換できません。")
except ZeroDivisionError:
    print("0では割れません。")

このようにして、場面ごとに適した対応ができます。

7. 実生活の例でさらに理解しよう

7. 実生活の例でさらに理解しよう
7. 実生活の例でさらに理解しよう

たとえば、「炊飯器でご飯を炊く」と考えてみましょう。

  • try:ご飯を炊く処理(炊飯ボタンを押す)
  • except:水が入ってなかったときの警告
  • else:正常に炊けたときは「炊き上がりました」と表示
  • finally:炊飯器の電源をオフにする

このように、tryfinallyは、実生活の「失敗が起きるかもしれないけど、ちゃんと対処する流れ」と同じなんです。

8. 例外処理を使うメリットとは?

8. 例外処理を使うメリットとは?
8. 例外処理を使うメリットとは?

例外処理を使うと、プログラムが途中で止まらずに最後まで動くようになります。また、ユーザーに「なぜ失敗したのか」を伝えることができ、使いやすいアプリケーションになります。

初心者でも、tryexceptelsefinallyを組み合わせて、しっかりとしたエラーハンドリング(エラー処理)を行えるようになります。

まとめ

まとめ
まとめ

今回の記事では、Pythonにおける例外処理の中でも、try・except・else・finallyを組み合わせた書き方について詳しく学びました。Pythonのプログラムは、計算処理やファイル操作、ユーザー入力など、さまざまな場面でエラーが発生する可能性があります。そうしたエラーを想定せずにコードを書くと、少しのミスでプログラム全体が停止してしまい、利用する側にとっても分かりにくく、不親切な動作になってしまいます。 try-except構文を使うことで、「エラーが起きるかもしれない処理」と「エラーが起きたときの対応」を明確に分けて書くことができ、プログラムの安全性と読みやすさが大きく向上します。さらに、elseを使えば「エラーが発生しなかった場合だけ実行したい処理」を整理して書くことができ、処理の意図がより分かりやすくなります。そしてfinallyは、エラーの有無に関係なく必ず実行されるため、後片付けや終了処理、ログ出力などに最適です。 try-except-else-finallyを正しく使い分けられるようになると、Pythonプログラミングの設計力が一段階上がります。単にエラーを防ぐのではなく、「エラーが起きる前提でどう動かすか」を考えられるようになり、実務でも通用する考え方が身につきます。特に、ValueError、ZeroDivisionError、FileNotFoundErrorなど、Pythonで頻出する例外を理解しておくことは、初心者から中級者へステップアップするうえで欠かせません。 また、複数のexceptを使い分けることで、状況ごとに異なるメッセージを表示できるようになり、ユーザーにとっても親切なプログラムになります。例外処理は「難しいもの」ではなく、「安心してプログラムを動かすための保険」のような存在だと考えると理解しやすいでしょう。今回学んだtry-except-else-finallyの構造をしっかり身につけておくことで、今後のPython学習やアプリケーション開発がよりスムーズになります。

サンプルプログラムで復習しよう


def input_and_divide():
    try:
        a = int(input("割られる数を入力してください: "))
        b = int(input("割る数を入力してください: "))
        result = a / b
    except ValueError:
        print("数値を正しく入力してください。")
    except ZeroDivisionError:
        print("0で割ることはできません。")
    else:
        print("計算結果は", result, "です。")
    finally:
        print("処理を終了します。")

このサンプルプログラムでは、tryの中で入力と計算を行い、exceptで入力ミスや0による割り算を個別に処理しています。エラーがなかった場合のみelseが実行され、最後にfinallyで必ず終了メッセージが表示されます。このような構成は、Pythonの例外処理の基本形として非常に重要で、実際の開発現場でもよく使われます。

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

生徒

「tryとexceptだけじゃなくて、elseやfinallyまで使うと、処理の流れがすごく分かりやすくなりますね。」

先生

「そうですね。エラーが起きた場合と起きなかった場合をはっきり分けて書けるのが大きなポイントです。」

生徒

「finallyは必ず実行されるから、後片付けや終了処理に向いているっていうのも理解できました。」

先生

「その理解はとても大切です。ファイル操作や通信処理では、finallyがあるかどうかで安全性が大きく変わります。」

生徒

「例外処理って、エラーを隠すためじゃなくて、ちゃんと対処するための仕組みなんですね。」

先生

「その通りです。try-except-else-finallyを使いこなせるようになると、Pythonプログラミングが一気に実践的になりますよ。」

カテゴリの一覧へ
新着記事
New1
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方
New2
Flask
FlaskでリダイレクトやURL生成を行う方法!便利な関数の使い方を解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Flask
Flask‑Mailの使い方!アプリからメールを送信する基本方法を解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
No.8
Java&Spring記事人気No8
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説