PythonでZeroDivisionError例外をキャッチして種類を確認する方法
Pythonでは、割り算の分母に0が指定されると、ZeroDivisionErrorという例外が発生します。これは数値計算を行うプログラムで非常によく見られるエラーのひとつで、放置するとプログラムが異常終了してしまいます。
そこで活躍するのがtry-except文による例外処理です。これを使えば、エラーが発生してもプログラムを止めずに適切に対処できます。さらに、発生した例外の種類(クラス名)を取得すれば、どのようなエラーなのかを動的に判別することも可能です。
ZeroDivisionErrorとは?
ZeroDivisionErrorは、除算(割り算)やモジュロ演算(剰余演算)において、除数(分母)が0である場合に送出されるPythonの組み込み例外です。例えば11 / 0のような計算を実行した瞬間に発生します。
例外をキャッチするサンプルコード
以下のコードでは、try-exceptブロックを使ってZeroDivisionErrorを捕捉し、例外の種類とエラーメッセージを出力しています。
import sys
try:
x = 11 / 0
print(x)
except Exception as e:
print(type(e))
print(e)
実行結果
<class 'ZeroDivisionError'> division by zero
コードの解説
・tryブロック内で11 / 0を実行すると、分母が0のためZeroDivisionErrorが発生します。
・発生した例外はexcept Exception as eで捕捉され、変数eに格納されます。
・type(e)で例外オブジェクトのクラス(種類)を確認でき、print(e)で具体的なエラーメッセージ「division by zero」が表示されます。
特定の例外だけを捕捉したい場合
すべての例外を広く受けると、意図しないバグまで隠してしまう可能性があります。実務では、以下のように例外を明示的に指定するのがおすすめです。
try:
x = 11 / 0
except ZeroDivisionError as e:
print('ゼロ除算エラーが発生しました:', e)
このように書くことで、ZeroDivisionError以外の予期せぬ例外は素通りし、デバッグがしやすくなります。状況に応じて使い分けましょう。
-
PythonでIOError例外をキャッチする方法【初心者向けにわかりやすく解説】
IOError例外とは? IOError(入出力エラー)は、入出力操作が失敗したときに発生する例外です。代表的な例としては、存在しないファイルをopen()関数で開こうとした場合や、OSに関連するエラーが発生した場合などが挙げられます。 なお、Python 3ではIOErrorはOSErrorの別名(エイリアス)となっており、どちらの名前で捕捉しても同じ例外を受け取ることができます。 try-exceptブロックで例外を処理する ファイルを開く処理などをtryブロック内に記述すると、入出力例外が発生した際にexceptブロックで適切に処理できます。以下に具体的なコード例を示します。 コード例(
-
PythonでKeyError例外をキャッチする方法をわかりやすく解説
Pythonでは、辞書(dict)に存在しないキーを使って値へアクセスしようとすると、KeyError例外が発生します。この記事では、try-except文を使ってKeyErrorをキャッチし、例外の種類や詳細情報を確認する方法を解説します。 KeyErrorが発生する仕組み 次のコードは、辞書に存在しないキー c で値を取得しようとしているため、KeyErrorが発生します。sys.exc_info() を使うと、発生した例外の型などの情報を取得できます。 import sys try: s = {a: 5, b: 7}[c] except: print(sys.exc_i