プログラミングをしていると、思いがけないエラーに遭遇することがあります。たとえば、ファイルが見つからなかったり、ユーザーが予期しない入力をしたり、0で割り算しようとしたり…。
そんな「もしも」のトラブルにもスマートに対処できるのが、Pythonの try-except
構文です。
この記事では、Pythonの例外処理について、初心者向けにやさしく解説します。
そもそも「例外処理」って何?
「例外処理」とは、プログラム中で予期せぬエラーが起きたときに、プログラムが止まるのを防ぎ、代替の処理を行う仕組みのことです。
たとえば、次のようなコード
num = int(input("数字を入力してください: "))
print(10 / num)
ここで「0」や「文字列」を入力すると、ZeroDivisionError
や ValueError
が発生して、プログラムがクラッシュしてしまいます。
try-except構文の基本形
#try構文の型
try:
#通常処理
except:
#error処理
finally:
#必ず実行したい処理
try
ブロック内にエラーが起きるかもしれないコードを記述し、except
でエラー発生時の対応処理を行います。finally
はエラーが起きても起きなくても必ず実行されます。
try構文を用いた使用例
ファイル書き込みとファイルの自動クローズ
#try構文を用いた使用例
file_name = open("test.txt",mode = "w")
try:
file_name.write("test program.")
finally:
file_name.close()
ファイルを開いた後は、必ず閉じる必要があります。エラーが発生しても finally
によって close()
が確実に呼ばれます。
ファイルが存在しない場合のエラー処理
ファイルを読み込む操作も例外が発生する可能性があります。以下のコードは、ファイルが存在しない場合に備えた例外処理になります。
try:
with open("text.txt", "r") as file:
content = file.read()
except FileNotFoundError:
print("ファイルが見つかりません。")
ゼロ除算の例外処理
try:
result = 10 / 0
except ZeroDivisionError:
print("ゼロで割ることはできません。")
Pythonでは、0で割るとプログラムが即座に停止しますが、例外処理を使えば安全です。
ユーザー入力と複数の例外処理
try:
num = int(input("整数を入力してください: "))
result = 10 / num
except ValueError:
print("無効な入力です。整数を入力してください。")
except ZeroDivisionError:
print("ゼロで割ることはできません。")
ValueError
は整数以外の文字列(例:”abc”)を int()
に渡すと発生します。
複数のエラーをまとめて処理する
複数のエラーを一括で処理したい場合は、タプルで指定できます。
try:
# 何かの処理
except (ValueError, ZeroDivisionError):
print("入力が無効、またはゼロ除算が発生しました。")
finallyブロックの用途
ファイルやネットワーク接続のように「最後に必ず後処理が必要な処理」では finally
を使います。
try:
f = open("sample.txt", "r")
content = f.read()
except FileNotFoundError:
print("ファイルが見つかりません。")
finally:
f.close()
よくあるミスと注意点
ミスの内容 | 解説 |
---|---|
try の中に全てを入れずに finally の前でエラーが出る | try 内に必要な処理をすべて含めること |
except だけでエラーの種類を限定しない | 可能な限り except ExceptionName: の形式で明示する |
finally で変数を使うが、その前に失敗して定義されていない | finally で使用する変数は、tryの外で定義しておく |
例外の種類一覧(よく使う)
エラー名 | 発生条件 |
---|---|
ZeroDivisionError | ゼロ除算 |
ValueError | 不正な値の変換 |
FileNotFoundError | 存在しないファイルの読み込み |
TypeError | 型の不一致操作(例: 数 + 文字) |
IndexError | リストの範囲外アクセス |
まとめ
Pythonのtry構文は、エラー処理の基本です。正しく使用することで、予測可能なエラーに対処し、プログラムの信頼性を高めることができます。
エラーメッセージを適切に扱い、例外処理をきちんと実装することで、より堅牢なコードを書くことができます。適宜、ご参照下さい。