Pythonのexceptによる例外処理の基本とエラーハンドリングの使い方をわかりやすく解説

スポンサーリンク
スポンサーリンク

exceptの概要

例外処理のエラーハンドリング Python予約語

except

概要 excepttry ブロック内で発生した例外(エラー)をキャッチし、適切に処理するためのキーワードです。プログラムの異常終了を防ぎ、エラーメッセージを表示したり、代替処理を行ったりできます。

わかりやすく説明 except は「もしエラーが発生したら、こうする」と指示するためのものです。例えば、ファイルを開く処理でファイルが存在しない場合、エラーを出すのではなく「ファイルが見つかりません」と表示できます。

  • try ブロック内で発生した例外を except でキャッチできます。
  • 特定の例外を指定して処理を分岐できます。
  • 複数の except を使って異なる例外を処理できます。

exceptの基本的な使い方

以下の例では、ゼロで割るとエラーが発生するため、それを except でキャッチして処理しています。

# 例外処理の基本
try:
    result = 10 / 0  # ゼロ除算エラー発生
except ZeroDivisionError:
    print("ゼロで割ることはできません")
  • try 内の 10 / 0ZeroDivisionError が発生します。
  • except ZeroDivisionError でエラーをキャッチし、「ゼロで割ることはできません」と表示します。

exceptで複数の例外をキャッチ

複数の異なる例外を処理する場合、それぞれの except ブロックを用意できます。

# 複数の例外を処理
try:
    num = int(input("数字を入力してください: "))
    result = 10 / num
except ZeroDivisionError:
    print("ゼロでは割れません")
except ValueError:
    print("数字を入力してください")
  • ゼロを入力すると ZeroDivisionError をキャッチし、「ゼロでは割れません」と表示。
  • 文字を入力すると ValueError をキャッチし、「数字を入力してください」と表示。

exceptで複数の例外をまとめてキャッチ

同じ処理を行いたい例外は、タプルでまとめて指定できます。

# まとめて例外をキャッチ
try:
    num = int(input("数字を入力してください: "))
    result = 10 / num
except (ZeroDivisionError, ValueError):
    print("無効な入力です")
  • ゼロを入力すると ZeroDivisionError、文字を入力すると ValueError をキャッチします。
  • どちらのエラーでも「無効な入力です」と表示します。

except asを使って例外の詳細を取得

as を使うと、発生した例外の詳細な情報を取得できます。

# 例外の詳細を表示
try:
    result = 10 / 0
except ZeroDivisionError as e:
    print(f"エラーが発生しました: {e}")
  • as e で発生した例外の情報を e に格納。
  • エラーメッセージを表示できます(例:「エラーが発生しました: division by zero」)。

exceptの実践的な使用例

ファイルを開く際に、存在しないファイルへの対応を行う例です。

# ファイルを開く処理
try:
    with open("nonexistent.txt", "r") as file:
        content = file.read()
except FileNotFoundError:
    print("ファイルが見つかりません")
  • ファイルが存在しない場合、FileNotFoundError をキャッチ。
  • エラーを防ぎ、「ファイルが見つかりません」と表示。

exceptの注意点

  • except は必ず try とセットで使う: except 単独では使用できません。
  • 汎用的な例外キャッチに注意: except Exception: はすべての例外をキャッチしますが、バグの発見を妨げる可能性があるため注意が必要です。
  • エラーメッセージを明示する: as を使ってエラー内容を出力すると、デバッグが容易になります。

exceptのよくある質問

Q: except は try と必ずセットで使う必要がありますか?
A: はい。単独では使用できず、try ブロックと組み合わせる必要があります。
Q: except の中で pass を使ってもよいですか?
A: はい。ただし、例外を無視することになるため、注意が必要です。
Q: すべての例外をキャッチする方法は?
A: except Exception: を使うと、すべての例外をキャッチできます。ただし、適切な例外処理を行うことが推奨されます。

まとめ

except は、プログラムの異常終了を防ぎ、エラー時の適切な処理を行うために使用されます。

  • try ブロック内で発生した例外を except でキャッチできます。
  • 特定の例外を指定して処理を分岐できます。
  • as を使うと、例外の詳細な情報を取得できます。

適切に except を活用し、エラーを適切に処理できるプログラムを作成しましょう。