📝
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で割った」「ファイルがない」「型が合わない」など、状況に応じた例外が用意されています。
ケースごとの例外処理
raise
1. 強制終了したい → - 意味:任意の場所で例外を「強制的に発生」させる。
- 使いどころ:想定外の値や状況になったら無条件に止めたいとき。
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以上でなければなりません
実行すると、その場で例外が出て、プログラムが終了します。
try-except
2. 処理を続けたい → - 意味:例外が起きても止めずに、代替処理やスキップをして続行する。
- 使いどころ:一部が失敗しても、全体を最後まで実行したいとき。
try:
result = 10 / 0 # ここで例外(ZeroDivisionError)
print("計算結果:", result)
except ZeroDivisionError:
print("0では割り算できません!")
print("プログラムが継続します")
- 例外が発生しそうな処理を
try
に書きます。 - 実際に例外が起きたら
except
が処理を引き受けます。
出力例(Notebookの場合)
0では割り算できません!
プログラムが継続します
まとめ
-
強制終了したい →
raise
-
継続させたい →
try-except
この2つを押さえるだけで、Pythonのエラー処理の基本は十分です。
Discussion