python的genericscatch

我有一些非常奇怪的行为,似乎导致无声的例外。 我如何编写一个通用的try catch来debugging所有的exception。 有些东西是:

try: # something that fails except e: print e 

更详细地介绍一下这个问题:

我有一个Django应用程序,在我的计算机上(Ubuntu Linux 8.10)通过runserver和mod-python工作正常。 在部署服务器上(Ubunut Linux 8.10),它通过runserver正常工作,但通过mod-python中的apache失败。

我已经将原因减less到了使用Berkeley DB(bsddb.db)和辅助键的应用程序的一部分。 辅助键的callback方法使用pickle来格式化键。 当我调用一个单一的值时,它失败。 但是,只有当我使用cPickle时才会失败,并且在callback函数之外的相同值上使用pickle也是可行的。

我只是想知道为什么它与cPickle失败。

在程序终止之前,例外已经默认打印了。 如果你想在其他地方发送错误(不打印),你可以这样做:

 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: 

回溯模块对格式化回溯相当有用。 然后您可以将其写入日志文件。

这是否工作? :

 except BaseException, e: