Python での例外メッセージ
-
Python で例外メッセージをキャプチャする方法
logger.exception()
メソッドを使用する -
logger.error()
メソッドを用いた Python での例外メッセージの取得 -
print()
メソッドを用いた 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()
メソッドを用いた Python の例外メッセージの取得する
また、例外メッセージを出力するために 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',)