【Python入門】ArithmeticError例外のキャッチ方法をわかりやすく解説
ArithmeticErrorは、数値計算に関連するエラーすべての基底クラス(親クラス)となる組み込み例外です。具体的には、以下のような例外クラスがこのArithmeticErrorを継承しています。
- OverflowError:演算結果が表現可能な範囲を超えた場合に発生
- ZeroDivisionError:0による除算や剰余演算を行った場合に発生
- FloatingPointError:浮動小数点演算で異常が発生した場合に発生
そのため、except句でArithmeticErrorを指定すれば、これらの個別の例外クラスを一つひとつ指定しなくても、数値計算関連の例外をまとめて捕捉することができます。
サンプルコード
以下は、0による除算を試みて発生した例外をArithmeticErrorとしてキャッチする例です。
import sys
try:
7 / 0
except ArithmeticError as e:
print(e)
print(type(e))
print('これはArithmeticErrorをキャッチする例です')
実行結果
division by zero <class 'ZeroDivisionError'> これはArithmeticErrorをキャッチする例です
コードのポイント
この例では、7 / 0という計算によってZeroDivisionErrorが発生します。except ArithmeticError as eと記述することで、発生した例外オブジェクトを変数eとして受け取り、エラーメッセージや例外の型を出力しています。
なお、古いPython 2のコードではprint文やsys.exc_typeが使われていましたが、現在主流のPython 3ではprint()関数とtype()関数を使用するのが標準的な書き方です。
ArithmeticErrorをキャッチするメリット
ZeroDivisionErrorなどの個別の例外のみを捕捉すると、それ以外の算術系の例外(オーバーフローなど)を見逃してしまう可能性があります。ArithmeticErrorを指定すれば、数値計算に起因する複数の例外を一括して処理できるため、計算処理を含むプログラムの堅牢性向上につながります。
-
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
-
Pythonのリスト内包表記で例外をキャッチするには?原因と対処法を解説
Pythonには、例外を処理したり無視したりするための組み込み関数は存在しません。そのため、リスト内包表記の中ですべての例外を処理することは不可能です。 その理由は、リスト内包表記が「式(expression)」で構成されている点にあります。例外のキャッチや無視、ハンドリングを行えるのは「文(statement)」である try〜except ブロックだけだからです。式の中に try-except を埋め込むことは、Pythonの文法上できません。 現実的な回避策:関数へ処理を委譲する この制限に対する実用的な解決策のひとつが、例外が発生しうる部分式の評価を「関数」に委譲する方法です。関数の中