\

Pythonのコードでエラーが発生しても、そこでプログラムを終わらせずに処理を続ける方法や、エラーの種類ごとに処理を分ける方法などを実現できる「例外処理」について解説します。

例外処理の基本

エラーの発生を捉えるにはif文ではなく、try-except文を使います。例えば、0で何かを割ることはできませんから、エラーが発生します。以下のようなコードではエラーになってプログラムが途中で終了してしまいます。

a = 1 / 0
print(a)
print("処理完了")  # ZeroDivisionError: division by zero

この例では1行目でエラーが発生し、次の行以降は実行されません。1行目で0で割ろうとすると、ZeroDivisionErrorという例外が発生しています。このエラーを「キャッチ」して、処理を最後まで継続するためには例外処理を実装します。

a = None
try:
    a = 1 / 0
except ZeroDivisionError:
    print("ゼロ除算エラーが発生")

print("処理が完了")
print(a)  # None

このように、処理をtry-except文で囲ってあげます。exceptの後には例外名を書きます。

try:
    # 通常の処理
except:
    # 例外発生時の処理

こうすると、tryブロックの途中でZeroDivisionError例外が発生してもexcept文がキャッチし、exceptブロックのコードが実行されます。

すべての例外をキャッチする

上の例では0除算のエラー(ZeroDivisionError)の例外が発生したときはうまくキャッチできますが、他の例外には対応できません。すべての例外をキャッチしたいときは、以下のようにExceptionクラスを指定します。

try:
    target = a[10]
except Exception as e:
    print(f"エラーメッセージ:{e}")

Exceptionクラスは(ほとんど)すべての例外の既定クラスです。そのため、どのような例外でもキャッチすることができます。どんな例外が発生しても必ずexceptブロックを実行させたいときや、想定できない例外が発生する可能性が高いときに使います。

ただしExceptionクラスのように、どのような例外もキャッチしてしまうと、プログラムの隠れたバグの原因になることも。後々にデバッグを難しくする原因にもなります。できるだけ具体的な例外クラスを指定するようにし、Exceptionを乱用するのは控えましょう。

以上が、Pythonでエラーハンドリングを行う際の基本的な考え方となります。この知識を活かして、より堅牢なPythonコードを書くことができるようになりましょう。

[初心者向け] Python if文でエラーを補足する?そこは「例外処理」にしましょう!

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です