Сообщение об исключении (Python 2.6)

Я отправил источник для крайнего компактного (1 класс, < 10 кибибайт) Математическое Средство анализа Java на моем веб-сайте. Это - синтаксический анализатор с рекурсивным спуском типа, который вызвал черепной взрыв для плаката принятого ответа.

Это поддерживает полный приоритет, круглую скобку, названную функции отдельного аргумента и переменные.

35
задан Eric Leschinski 29 October 2014 в 19:36
поделиться

4 ответа

Это печатает сообщение об исключении:

except Exception, e:
    print "Couldn't do it: %s" % e

Это покажет всю трассировку:

import traceback

# ...

except Exception, e:
    traceback.print_exc()

Но вы, возможно, не захотите перехватить исключение. Чем уже будет улов, тем лучше в целом. Так что вы можете вместо этого попробовать:

except IOError, e:

. Также по поводу сужения обработки исключений, если вас беспокоят только отсутствующие файлы, тогда поместите try-except только вокруг открытого:

try:
    pkl_file = open('monitor.dat', 'rb')
except IOError, e:
    print 'No such file or directory: %s' % e

monitoring_pickle = pickle.load(pkl_file)
pkl_file.close()
90
ответ дан 27 November 2019 в 06:26
поделиться

Python имеет модуль трассировки .

import traceback
try:
    pkl_file = open('monitor.dat', 'rb')
    monitoring_pickle = pickle.load(pkl_file)
    pkl_file.close()
except IOError:
    traceback.print_exc()
9
ответ дан 27 November 2019 в 06:26
поделиться

Если вы хотите захватить объект исключения, переданный исключением, лучше всего начать использовать НОВЫЙ формат, представленный в Python 2.6 (который в настоящее время поддерживает оба), потому что это будет единственный способ сделать это в Python 3.

И это:

try:
    ...
except IOError as e:
    ...

Пример:

try:
    pkfile = open('monitor.dat', 'rb')
except IOError as e:
    print 'Exception error is: %s' % e

Подробный обзор можно найти в Что нового в документации Python 2.6 .

22
ответ дан 27 November 2019 в 06:26
поделиться

Спасибо всем.

Это то, что мне было нужно :)

import traceback

try:
    # boom
except Exception:
    print traceback.format_exc()
6
ответ дан 27 November 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: