Pythonの例外処理をやさしく解説!初心者でもわかるtry-exceptの基本と使い方
生徒
「Pythonでプログラムが途中で止まらないようにする方法ってありますか?何か間違うとすぐに赤いエラー画面になってしまうんです。」
先生
「Pythonでは、例外処理という仕組みを使うことで、エラーが起きてもプログラム全体が止まらないようにできます。特に初心者がつまずきやすい部分なので、今日はゆっくり解説していきますね。」
生徒
「例外処理って何ですか?難しそうな名前ですけど、どういうときに使うものなんですか?」
先生
「例外処理というのは、プログラムの途中で問題が起きたときに、その問題をキャッチして代わりの処理に切り替える仕組みのことです。Pythonではtry-exceptという文法を使います。まずは基本から見ていきましょう。」
1. Pythonの例外処理とは?わかりやすく理解しよう
Pythonの例外処理とは、プログラムで何か問題が起きたときに、エラーを受け取りつつ処理を続けるための仕組みです。たとえば、数字を入力してほしい場面で文字が入力されると、通常はエラーが出て止まってしまいます。しかし、例外処理を使えば「入力が間違っているのでやり直してください」といった案内を表示しつつ処理を続けられます。
パソコンに不慣れな人でも、日常生活の例に置き換えると理解しやすいです。たとえば、自動販売機に百円玉を入れたつもりが五十円玉だった場合、そのまま飲み物は買えません。しかし機械は「お金が足りません」と教えてくれます。これがプログラムでいう「例外をキャッチして代わりの処理を実行する」仕組みに近い考え方になります。
2. try-exceptの基本的な書き方
Pythonの例外処理は、まずtryで「試しに実行する部分」を書き、もしエラーが発生したらexcept内の処理が実行されます。この流れを理解すれば難しくありません。
try:
number = int(input("数字を入力してください: "))
print("入力された数字:", number)
except ValueError:
print("数字として認識できませんでした。もう一度試してください。")
この例では、数字を入力する場面で文字が入力された場合にエラーが発生しますが、例外処理によってプログラムが止まることなく案内を表示できます。
3. よくある例外と初心者がつまずくポイント
Pythonにはたくさんの種類の例外がありますが、初心者が頻繁に遭遇するものはいくつか決まっています。たとえば、存在しないファイルを開こうとしたときのFileNotFoundErrorや、ゼロで割ろうとしたときのZeroDivisionErrorなどが代表的なものです。
try:
result = 10 / 0
except ZeroDivisionError:
print("ゼロで割ることはできません。")
このように、よくある失敗をexceptで受け取ることで、プログラムは安全に続行できます。初心者のうちは、どの例外がどんな場面で起こるのかを知っておくことがとても大切です。
4. exceptを複数使うこともできる
プログラムの内容によっては、発生しうるエラーが複数ある場合があります。そのようなときはexceptを複数書くことで、それぞれのエラーごとに違う処理を行うことができます。
try:
file = open("test.txt", "r")
number = int(file.read())
except FileNotFoundError:
print("ファイルが見つかりませんでした。")
except ValueError:
print("ファイルの中身を数字として読み込めませんでした。")
このように、問題の種類に応じて適切な案内を表示できるようになります。実際のシステム開発では、どのようなエラーが起こりうるかを想定し、丁寧に例外を分けることで安全なプログラムを作ります。
5. finallyを使えば必ず実行される処理も書ける
finallyというキーワードを使うことで、エラーが起こっても起こらなくても必ず実行したい処理を書くことができます。たとえば、ファイルを開いたら必ず閉じたい場合や、接続したネットワークを確実に切断したい場合などに使われます。
try:
file = open("sample.txt", "r")
data = file.read()
print(data)
except FileNotFoundError:
print("ファイルが存在しません。")
finally:
print("処理が完了しました。")
この仕組みを覚えておくと、プログラムの後片付けが確実にできるようになります。
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プログラムを書けるように、これからも頑張ります!」