📝

Pythonでエラーが出たときの対処法を整理してみる🐍

に公開

はじめに

Pythonを書いていると必ず遭遇するのが**エラー(例外)**です。
エラーが出るとプログラムはそのまま止まりますが、状況によって望ましい対応は違います。

  • 強制終了したい(その場で止めたい)
  • 処理を続けたい(落とさず最後まで回したい)

この記事では、これらのケースごとの処理方法を、Jupyter Notebookでの実行例とともに整理していきます。


例外(Exception)とは?

Pythonでは、プログラム実行中に発生する「エラー」を 例外(Exception) という仕組みで表現します。
例えば次のようなときに例外が発生します。

x = 10 / 0 # 0では割れない

出力例(Notebookの場合)

---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
/tmp/ipython-input-4001962833.py in <cell line: 0>()
----> 1 x = 10/0

ZeroDivisionError: division by zero

このZeroDivisionError例外です。
Pythonでは「0で割った」「ファイルがない」「型が合わない」など、状況に応じた例外が用意されています。


ケースごとの例外処理

1. 強制終了したい → raise

  • 意味:任意の場所で例外を「強制的に発生」させる。
  • 使いどころ:想定外の値や状況になったら無条件に止めたいとき。
x = -1
if x < 0:
    raise ValueError("xは0以上でなければなりません")

出力例(Notebookの場合):

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/tmp/ipython-input-1432477186.py in <cell line: 0>()
      1 x = -1
      2 if x < 0:
----> 3     raise ValueError("xは0以上でなければなりません")

ValueError: xは0以上でなければなりません

実行すると、その場で例外が出て、プログラムが終了します。

2. 処理を続けたい → try-except

  • 意味:例外が起きても止めずに、代替処理やスキップをして続行する。
  • 使いどころ:一部が失敗しても、全体を最後まで実行したいとき。
try:
    result = 10 / 0   # ここで例外(ZeroDivisionError)
    print("計算結果:", result)
except ZeroDivisionError:
    print("0では割り算できません!")

print("プログラムが継続します")
  • 例外が発生しそうな処理を try に書きます。
  • 実際に例外が起きたら except が処理を引き受けます。

出力例(Notebookの場合)

0では割り算できません!
プログラムが継続します

まとめ

  • 強制終了したいraise
  • 継続させたいtry-except

この2つを押さえるだけで、Pythonのエラー処理の基本は十分です。


Discussion