如何显示Python中"try"失败的原因
有没有办法显示为什么一个“try”失败了,然后跳到“except”,而不需要手动写出所有可能的错误,也不想让程序结束呢?
举个例子:
try:
1/0
except:
someway to show
"Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
1/0
ZeroDivisionError: integer division or modulo by zero"
我不想这样做if:打印错误1, elif: 打印错误2, elif:等等...
。我想看到如果没有try
的话会显示的错误。
2 个回答
8
我经常使用 traceback
来记录这样的错误信息,通常是把它们写到日志里或者显示在错误输出上:
import traceback
import sys
try:
print 1/0
except Exception:
s = traceback.format_exc()
serr = "there were errors:\n%s\n" % (s)
sys.stderr.write(serr)
输出结果会显示出错误发生的代码行的相关信息:
there were errors:
Traceback (most recent call last):
File "c:\test\ex.py", line 5, in <module>
print 1/0
ZeroDivisionError: integer division or modulo by zero
10
试试这个:
>>> try:
... 1/0
... except Exception, e:
... print e
...
integer division or modulo by zero
还有其他的写法,比如:
>>> try:
... 1/0
... except Exception as e:
... print e
...
integer division or modulo by zero
更多信息可以在这个 错误教程 中找到。