Я отправил источник для крайнего компактного (1 класс, < 10 кибибайт) Математическое Средство анализа Java на моем веб-сайте. Это - синтаксический анализатор с рекурсивным спуском типа, который вызвал черепной взрыв для плаката принятого ответа.
Это поддерживает полный приоритет, круглую скобку, названную функции отдельного аргумента и переменные.
Это печатает сообщение об исключении:
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()
Python имеет модуль трассировки .
import traceback
try:
pkl_file = open('monitor.dat', 'rb')
monitoring_pickle = pickle.load(pkl_file)
pkl_file.close()
except IOError:
traceback.print_exc()
Если вы хотите захватить объект исключения, переданный исключением, лучше всего начать использовать НОВЫЙ формат, представленный в 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 .
Спасибо всем.
Это то, что мне было нужно :)
import traceback
try:
# boom
except Exception:
print traceback.format_exc()