打印出 ValueError 的实际错误消息
Posted
技术标签:
【中文标题】打印出 ValueError 的实际错误消息【英文标题】:Printing out actual error message for ValueError 【发布时间】:2011-05-05 02:10:59 【问题描述】:当我捕捉到 ValueError 的消息后,如何实际打印出来?
如果我在代码中输入except ValueError, err:
而不是except ValueError as err:
,则会收到错误SyntaxError: invalid syntax
。
【问题讨论】:
【参考方案1】:使用logging
的另一种方法
import logging
try:
int("dog")
except Exception as e:
logging.warning(e)
logging.error(e)
给予
WARNING:root:invalid literal for int() with base 10: 'dog'
ERROR:root:invalid literal for int() with base 10: 'dog'
[Program finished]
只需键入异常即可,
invalid literal for int() with base 10: 'dog'
[Program finished]
取决于您希望如何处理输出
【讨论】:
【参考方案2】:Python 3 要求在打印之前将异常转换为字符串:
try:
...
except ValueError as error:
print(str(error))
【讨论】:
这仍然不是真的。print(error)
在 Python 3 的上下文中工作得很好。
@snapshoe 如果这不是真的,为什么它会被投票?也许在某些情况下确实需要它?我对此表示怀疑,但谁知道【参考方案3】:
try:
...
except ValueError as e:
print(e)
【讨论】:
请注意,在 Python 3 中,您必须显式转换为字符串:print(str(e))
。
在 Python 3 中必须显式转换为字符串是不正确的。至少从 3.5 开始。
请注意,在 Python 3 中,您必须显式转换为字符串:print(str(e)),至少对于 Python 3.6.6
@Bengt 我认为您应该将其发布为答案。 Python 3.7.5 需要强制转换
我同意@snapshoe,这不是真的,在打印之前必须将异常对象转换为字符串;您在 print 函数文档中有这样的内容:“所有非关键字参数都转换为字符串,如 str()
确实”。我只能假设,所以请耐心等待,但是当确实需要强制转换时,您可能已经完成了像 print('Error is: ' + str(e))
这样的连接,但这是因为连接而不是 print 函数。
以上是关于打印出 ValueError 的实际错误消息的主要内容,如果未能解决你的问题,请参考以下文章
Python CodeLab 关于异常的问题——尝试,除了 ValueError
在 python 中打印出文本文件会给出错误消息 -charmap_decode(input,errors,decoding_table) [重复]