我正在开发一个Django站点,并且一直在努力找出处理异常处理的最佳方法.我一直在做
try:
Some code
except:
log error in my own words, i.e 'Some code' failed to execute
Some other code
Run Code Online (Sandbox Code Playgroud)
这可以捕获所有异常,从而确保我的网站不会传递500个错误等.但是,由于我的知识有限,我正在失去实际的异常,这使得调试变得非常痛苦.如何打印出现的错误?目前我注释掉了try:catch:并查看错误并修复它.肯定有更好的办法!
提前致谢
丰富
Len*_*bro 18
您在异常变量中捕获异常:
try:
# some code
except Exception, e:
# Log the exception.
Run Code Online (Sandbox Code Playgroud)
有各种格式化异常的方法,日志模块(我假设您/ Django使用它)支持格式化异常,并且异常本身通常在呈现给字符串时呈现有用的消息.
这是一个例子:
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug('This message should go to the log file')
try:
1/0
except Exception as e:
logging.exception(e)
Run Code Online (Sandbox Code Playgroud)
此示例使用新的"as"语法来捕获异常,Python 2.6及更高版本支持该异常.以上的输出是:
DEBUG:root:This message should go to the log file
ERROR:root:integer division or modulo by zero
Traceback (most recent call last):
File "untitled-1.py", line 6, in <module>
1/0
ZeroDivisionError: integer division or modulo by zero
Run Code Online (Sandbox Code Playgroud)
#!/usr/bin/env python
import sys
try:
0 / 0
except Exception, e:
print >> sys.stderr, 'Hello %s' % e
# Hello integer division or modulo by zero
Run Code Online (Sandbox Code Playgroud)
请注意,您可以为一个块捕获多个异常,例如:
try:
open(filename)
except NameError, e:
print >> sys.stderr, e
except IOError, ioe:
print >> sys.stderr, ioe
Run Code Online (Sandbox Code Playgroud)
可以在本教程中找到有关异常处理的更多信息:
尝试这个:
try:
# some code
except Exception, e:
# log error with data from e
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9016 次 |
| 最近记录: |