Pythonで複数のExceptionが起きたときのTracebackを文字列で取得する

Exceptionをメールで送信するようにしたところ、
最後のExcetptionだけが送信されて流れがよくわからなかったので、
それまでのExceptionを取得する方法を調べてみました。

import traceback

try:
    try:
        raise Exception("test1")
    except:
        raise Excetion("test2")
except Exception as e:
    tb_list = traceback.format_exception(
        type(e), e, e.__traceback__)

for i in tb_list:
    print(i)
Traceback (most recent call last):

  File "<ipython-input-18-0a7eabe6b206>", line 5, in <module>
    raise Exception("test1")

Exception: test1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "<ipython-input-18-0a7eabe6b206>", line 7, in <module>
    raise Excetion("test2")

NameError: name 'Excetion' is not defined

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です