Подтвердить что ты не робот

Обнаруженное исключение - None

У меня есть script, написанный на python2.7, где для целей отладки я использую оператор catch-all для поиска и печати всех исключений. По какой-то причине исключение поймано иногда None. Что может случиться?

код выглядит примерно так:

from __future__ import print_function

try:
    run_arbitrary_code()
except Exception as e:
    print(e)

Вывод:

None
None
None
None

Я никогда не испытывал исключения None и задавался вопросом, что может вызвать это.

Чтобы ответить на некоторые комментарии, функция выполняет довольно много. Он включает в себя такие вещи, как поиск графа и отправка и получение данных JSON по сокету, поэтому есть немало вещей, которые могут пойти не так. Но проблема здесь в том, что поднятое исключение составляет None, что не помогает моей отладке вообще.

4b9b3361

Ответ 1

Посмотрите на тип исключения, я ставлю его KeyError:

try:
    dict()[None]
except Exception as e:
    print(type(e), e)

Вывод:

<class 'KeyError'> None

Ответ 2

Вам лучше печатать repr исключения, а не по умолчанию str, который применяется print, например:

from __future__ import print_function

try:
    run_arbitrary_code()
except Exception as e:
    print(repr(e))