Показать больше уровней исключений в трассировке Python - PullRequest
1 голос
/ 19 марта 2012

Я ловлю исключения в менеджерах контекста, однако я не вижу все уровни повторных исключений.Кто-нибудь знает, как это улучшить?

import traceback

def f():
    try:
        raise Exception("Interesting")
    except Exception as e:
        raise Exception("Exc {} raised".format(e))

class Try():
    def __enter__(self):
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("Exception {} raised".format(exc_val))
        print("".join(traceback.format_tb(exc_tb, 100)))
        return True

with Try():
    f()

Здесь я также хотел бы видеть строку кода "Интересного" исключения (строка 5) в трассировке, однако я получаю

Exception Exc Interesting raised raised
File "try_test.py", line 19, in <module>
    f()
File "try_test.py", line 7, in f
    raise Exception("Exc {} raised".format(e))

1 Ответ

4 голосов
/ 19 марта 2012

Используйте traceback.format_exception вместо traceback.format_tb.

См. Документацию traceback.

...