python的通用捕获
我有一些非常奇怪的行为,似乎导致了无声的异常。如何编写一个可以调试所有异常的通用try-catch。大致如下: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:
# 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
,这是你通常不想捕捉的东西。