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

Общий улов для python

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

try:
    # something that fails
except e:
    print e

Немного больше о проблеме:

У меня есть приложение Django, которое на моем компе (Ubuntu Linux 8.10) отлично работает как с помощью runerver, так и с mod-python. На сервере развертывания (Ubunut Linux 8.10) он отлично работает с помощью сервера задач, но с ошибкой через apache в mod-python.

Я уменьшил причину до части приложения, использующего Berkeley DB (bsddb.db) и вторичные ключи. Метод обратного вызова для вторичных ключей использует pickle для форматирования ключей. Он терпит неудачу, когда я вызываю pickle на одно значение. Однако это происходит только при использовании cPickle, и использование pickle на тех же значениях вне функции обратного вызова также работает.

Я просто хочу знать, почему это не с помощью cPickle.

4b9b3361

Ответ 1

Исключения уже напечатаны по умолчанию перед завершением программы. Если вы хотите отправить ошибку где-нибудь еще (не печатать), вы можете сделать это:

try:
    something()
except Exception as e:
    send_somewhere(traceback.format_exception(*sys.exc_info()))
    raise # reraises the exception

обратите внимание, что этот формат с использованием ключевого слова as предназначен для python > 2.6. Старый способ:

except Exception, e:

Ответ 2

модуль трассировки весьма полезен для форматирования трассировки. Затем вы можете записать его в файл журнала.

Ответ 3

Это работает?

except BaseException, e: