traceback.format_exc / print_exc возвращает None при ожидании трассировки - PullRequest
5 голосов
/ 13 марта 2012

Я не могу понять, почему traceback.format_exc () возвращает «None» в следующем примере:

#!/usr/bin/env python

import sys
import traceback

def my_excepthook(type, value, tb):
    print type.__name__
    print value
    # the problem: why does this return "None"?
    print traceback.format_exc(tb) # see http://docs.python.org/library/traceback.html#traceback.format_exc

sys.excepthook = my_excepthook # see http://docs.python.org/library/sys.html#sys.excepthook

# some code to generate a naturalistic exception
a = "text"
b = 5
error = a + b

Используя Python 2.7.1, я получаю следующий вывод:

TypeError
cannot concatenate 'str' and 'int' objects
None

Вместо «Нет» в 3-й строке я ожидаю получить то, что происходит, когда я закомментирую строку sys.excepthook:

Traceback (most recent call last):
  File "log-test.py", line 17, in <module>
    error = a+b 

1 Ответ

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

Попробуйте изменить в my_excepthook вот так:

print "".join(traceback.format_exception(type, value, tb))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...