如何显示Python中"try"失败的原因

9 投票
2 回答
4124 浏览
提问于 2025-04-15 23:39

有没有办法显示为什么一个“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

更多信息可以在这个 错误教程 中找到。

撰写回答