如何在不进行字符串解析的情况下解析 Python 中的 ValueError?

How to parse a ValueError in Python without string parsing?

我是 运行 一名编程人员并得到预期的 ValueError 输出:

ValueError: {'code': -123, 'message': 'This is the error'}

我不知道如何解析这些数据,只能获取代码(或消息)值。我怎样才能得到 ValueError 的 code 值?

我试过以下方法:

这样做的 pythonic 方式是什么?

编辑

的一件事是获取字符串索引,但我不想这样做,因为我觉得它不是很pythonic。

您应该直接从字典中获取 values() 而不是 e。试试这个:

try:
     ValueError= {'code': -123, 'message': 'This is the error'}
     Value = ValueError.get('code')
     print Value
except Exception as e:
    pass

ValueError exception class have an args 属性是 tuple 给异常构造函数的参数。

>>> a = ValueError({'code': -123, 'message': 'This is the error'})
>>> a
ValueError({'code': -123, 'message': 'This is the error'})
>>> raise a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: {'code': -123, 'message': 'This is the error'}
>>> dir(a) # removed all dunder methods for readability.
['args', 'with_traceback']
>>> a.args
({'code': -123, 'message': 'This is the error'},)
>>> a.args[0]['code']
-123

ValueError 是字典类型。 所以你可以使用 e.get("key") 到达字典中的任何字段。