Python ValueError错误消息

wro*_*ame 42 python exception python-3.x

在我捕获之后,如何实际打印出ValueError的消息?

sna*_*hoe 66

try:
    ...
except ValueError as e:
    print(e)
Run Code Online (Sandbox Code Playgroud)

  • 请注意,在Python 3中,您必须明确地转换为字符串:`print(str(e))`. (25认同)
  • 你不得不在Python 3中显式地转换为字符串.至少从3.5开始. (4认同)
  • 我同意@snapshoe,这不是真的,异常对象必须在打印之前转换为字符串;您可以在 _print_ 函数文档中找到此内容:**“所有非关键字参数都像 `str()` 一样转换为字符串”**。我只能假设,所以请耐心等待,但是当确实需要强制转换时,您可能会执行像 `print('Error is: ' + str(e))` 这样的串联,但这是因为串联而不是_print_ 函数。 (3认同)

Pau*_*l P 13

访问消息的另一种方式是通过args

try:
    ...
except ValueError as e:
    print(e.args[0])
Run Code Online (Sandbox Code Playgroud)


Ben*_*ngt 10

Python 3 要求在打印之前将异常转换为字符串:

try:
    ...
except ValueError as error:
    print(str(error))
Run Code Online (Sandbox Code Playgroud)

  • 这仍然不是事实。`print(error)` 在 Python 3 的上下文中工作得很好。 (4认同)
  • @questionto42 使用先前的字符串连接会导致需要这样做:即:如果不转换字符串,`print("Error: " + e)` 将失败。使用正确的格式: `print(f"Error: {e}")` 效果很好 (2认同)