python的通用捕获

python的通用捕获,python,exception,Python,Exception,我有一些非常奇怪的行为,似乎导致了无声的异常。如何编写一个可以调试所有异常的通用try-catch。大致如下: try: # something that fails except e: print e 关于手头问题的详细信息: 我有一个Django应用程序,在我的计算机上(UbuntuLinux8.10)可以通过runserver和ModPython正常工作。在部署服务器(UbuntuLinux8.10)上,它可以通过runserver正常工作,但通过mod python中的

我有一些非常奇怪的行为,似乎导致了无声的异常。如何编写一个可以调试所有异常的通用try-catch。大致如下:

try:
    # something that fails
except e:
    print e
关于手头问题的详细信息:

我有一个Django应用程序,在我的计算机上(UbuntuLinux8.10)可以通过runserver和ModPython正常工作。在部署服务器(UbuntuLinux8.10)上,它可以通过runserver正常工作,但通过mod python中的apache失败

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

我只想知道为什么cPickle会失败。

这有用吗?:

except BaseException, e:

对于格式化回溯非常有用。然后可以将其写入日志文件。

在程序终止之前,默认情况下已打印异常。如果要将错误发送到其他地方(而不是打印),可以执行以下操作:

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:

不知道“异常为e”的更改。“Exception,e”总是让我感到困扰,很高兴看到它得到了清理。“as”关键字是python>=2.6这样一个简单的解决方案。但我每隔一个月就用谷歌搜索一次,然后点击顶部链接,结果就出现在这里。你不应该捕捉
BaseException
——它包括
SystemExit
KeyboardInterrupt
,这是你通常不想捕捉的东西。