我有一些非常奇怪的行为,似乎导致了无声的异常。如何编写一般的try catch,我可以调试所有异常。有点像:
try:
# something that fails
except e:
print e
详细了解手头的问题:
我有一个Django应用程序,在我的comp(Ubuntu Linux 8.10)上通过runserver和mod-python工作正常。在部署服务器(Ubunut Linux 8.10)上,它通过runserver工作正常,但在mod-python中通过apache失败。
我已将原因缩减为使用Berkeley DB(bsddb.db)和辅助密钥的应用程序的一部分。辅助键的回调方法使用pickle来格式化键。当我在单个值上调用pickle时失败。但是,它只在我使用cPickle时失败,并且在回调函数之外的相同值上使用pickle也可以。
我只是想知道为什么cPickle失败了。
答案 0 :(得分:130)
在程序终止之前,默认情况下已经打印了例外。如果你想在其他地方发送错误(不打印它),你可以这样做:
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:
答案 1 :(得分:2)
traceback module对于格式化回溯非常有用。然后,您可以将其写入日志文件。
答案 2 :(得分:1)
这有用吗? :
except BaseException, e: