Python での例外メッセージ

Muhammad Waiz Khan 2023年1月30日
  1. Python で例外メッセージをキャプチャする方法 logger.exception() メソッドを使用する
  2. logger.error() メソッドを用いた Python での例外メッセージの取得
  3. print() メソッドを用いた Python の例外メッセージの取得する
Python での例外メッセージ

このチュートリアルでは、Python で例外メッセージをキャプチャするためのさまざまな方法を説明します。例外処理は、プログラムの実行中に発生した例外に対応するために使用されます。例外を処理することは重要です。そうしないと、何らかの例外が発生するたびにプログラムがクラッシュしてしまいます。

Python では try ... except 文が例外を処理します。しかし、コードの実行中に発生した例外の詳細を把握して、それを解決する必要があります。Python で例外メッセージをキャプチャするために利用できる様々な方法を以下に説明します。

Python で例外メッセージをキャプチャする方法 logger.exception() メソッドを使用する

logger.exception() メソッドはエラーメッセージとログトレースを返します。メソッドは except 文の中になければならません。そうでなければ、他の場所では正しく動作しません。

以下のコード例は、logger.exception() メソッドと try ... except 文を使って Python で例外メッセージを取得する方法を示しています。

import logging

logger = logging.getLogger()

try:
    x = 1 / 0
except Exception as e:
    logger.exception("Exception occurred while code execution: " + str(e))

出力:

Exception occurred while code execution: division by zero
Traceback (most recent call last):
  File "<ipython-input-27-912703271615>", line 5, in <module>
    x = 1/0
ZeroDivisionError: division by zero

logger.error() メソッドを用いた Python での例外メッセージの取得

logger.error() メソッドは、try ブロック内で例外が発生した場合にのみエラーメッセージを返します。以下に、logger.error() メソッドが Python で例外メッセージを取得する方法のコード例を示します。

import logging

logger = logging.getLogger()

try:
    x = 1 / 0
except Exception as e:
    logger.error("Exception occurred while code execution: " + str(e))

出力:

Exception occurred while code execution: division by zero

上の例で気づいたように、str(e) メソッドは例外 e オブジェクトから例外メッセージを取得するだけで、例外の型は取得しません。

例外メッセージに沿って例外の型を取得するために repr(e) メソッドを利用することができます。以下のコード例は repr(e) メソッドの使用と出力を示しています。

import logging

logger = logging.getLogger()
try:
    x = 1 / 0
except Exception as e:
    logger.error("Exception occurred while code execution: " + repr(e))

出力:

Exception occurred while code execution: ZeroDivisionError('division by zero',)

また、例外メッセージを出力するために print() メソッドを使用することもできます。以下のサンプルコードは、print() メソッドを用いて Python で例外メッセージを取得して出力する方法を示しています。

コード例:

try:
    x = 1 / 0
except Exception as e:
    print("Exception occurred while code execution: " + repr(e))

出力:

Exception occurred while code execution: ZeroDivisionError('division by zero',)

関連記事 - Python Exception