我如何打印错误/异常在except:块?

try:
    ...
except:
    print(exception)

当前回答

对于Python 2.6及更高版本和Python 3.x:

except Exception as e: print(e)

对于Python 2.5及更早版本,使用:

except Exception,e: print str(e)

其他回答

我建议使用try-except语句。此外,日志异常不是使用print语句,而是在记录器上记录级别为ERROR的消息,我发现这比print输出更有效。该方法只能从异常处理程序调用,如下所示:

import logging

try:
    *code goes here*
except BaseException:
    logging.exception("*Error goes here*")

如果你想了解更多关于日志记录和调试的知识,这个python页面上有很好的文档。

如果您想这样做的话,可以使用assert语句来引发一行错误。这将帮助您编写静态可修复的代码并及早检查错误。

assert type(A) is type(""), "requires a string"

在这里展开“except Exception as e:”的解决方案是一个很好的一行,其中包括一些额外的信息,如错误的类型和发生的位置。


try:
    1/0
except Exception as e:
    print(f"{type(e).__name__} at line {e.__traceback__.tb_lineno} of {__file__}: {e}")

输出:

ZeroDivisionError at line 48 of /Users/.../script.py: division by zero

在Python 2.6或更高版本中,它更简洁:

except Exception as e: print(e)

在较旧的版本中,它仍然是相当可读的:

except Exception, e: print e

traceback模块提供了格式化和打印异常及其回溯信息的方法,例如,这将像默认处理程序一样打印异常:

import traceback

try:
    1/0
except Exception:
    traceback.print_exc()

输出:

Traceback (most recent call last):
  File "C:\scripts\divide_by_zero.py", line 4, in <module>
    1/0
ZeroDivisionError: division by zero