我想捕获Python异常并打印它而不是重新提升它。例如:
def f(x):
try:
return 1/x
except:
print <exception_that_was_raised>
然后应该这样做:
>>> f(0)
'ZeroDivisionError'
没有例外被提出。
有没有办法做到这一点,除了在巨大的try-except-except ...... except子句中列出每个可能的异常?
答案 0 :(得分:9)
如果您需要Base异常类的名称,请使用异常的message
属性或e.__class__.__name__
,例如ZeroDivisionError'
In [30]: def f(x):
try:
return 1/x
except Exception as e:
print e.message
....:
In [31]: f(2)
Out[31]: 0
In [32]: f(0)
integer division or modulo by zero
在python 3.x中,message
属性已被删除,因此您只需使用print(e)
或e.args[0]
,e.__class__.__name__
保持不变。
答案 1 :(得分:3)
这就是我的工作方式:
try:
0/0
except Exception as e:
print e
答案 2 :(得分:2)
try:
0/0
except ZeroDivisionError,e:
print e
#will print "integer division or modulo by zero"
像这样的东西, Pythonic duck typing让我们可以在飞行中将错误实例转换为字符串=) 祝你好运=)