※このページではアフィリエイト広告を利用しています

【Python入門】try-except構文でエラーに強いプログラムを作ろう!

Python

プログラミングをしていると、思いがけないエラーに遭遇することがあります。たとえば、ファイルが見つからなかったり、ユーザーが予期しない入力をしたり、0で割り算しようとしたり…。

そんな「もしも」のトラブルにもスマートに対処できるのが、Pythonの try-except 構文です。

この記事では、Pythonの例外処理について、初心者向けにやさしく解説します。

この記事で学べること
  • Pythonの try-except 構文の基本
  • finally の役割と使いどころ
  • よくあるエラーの対処法(FileNotFoundError, ZeroDivisionError など)
  • 具体的なサンプルコードと実行例
スポンサーリンク
スポンサーリンク

そもそも「例外処理」って何?

「例外処理」とは、プログラム中で予期せぬエラーが起きたときに、プログラムが止まるのを防ぎ、代替の処理を行う仕組みのことです。

たとえば、次のようなコード

num = int(input("数字を入力してください: "))
print(10 / num)

ここで「0」や「文字列」を入力すると、ZeroDivisionErrorValueError が発生して、プログラムがクラッシュしてしまいます。

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構文は、エラー処理の基本です。正しく使用することで、予測可能なエラーに対処し、プログラムの信頼性を高めることができます。

エラーメッセージを適切に扱い、例外処理をきちんと実装することで、より堅牢なコードを書くことができます。適宜、ご参照下さい。

関連記事リンク

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