处理异常的最pythonic方式

百万

我有这个代码:

normalize_data['key1'] = json.loads(normalize_data.get('key1', ''))
normalize_data['key2'] = [key for key in
                                json.loads(normalize_data.get('key2', '[]'))]
normalize_data['key3'] = [json.loads(normalize_data.get('key3', ''))]
normalize_data['key4'] = [json.loads(normalize_data.get('key4', ''))]

如您所见,每个键的处理方式都不同。如果缺少任何键,它将引发JSONEncodeError. 如果任何键的任何值格式错误,它将引发TypeError. 处理这些的最 Pythonic 的方式是什么?我试着把它放在上面的代码之前:

for key in ['key1', 'key2', 'key3', 'key4']:
    if key not in normalize_data:
        raise serializers.ValidationError({'error': f'Field {key} is missing'})
    try:
        json.loads(normalize_data[key])
    except TypeError:
        raise serializers.ValidationError({'error': f'Wrong format of {key}'})

但我真的不喜欢它。谢谢大家。

科拉连

也许:

for key in ['key1', 'key2', 'key3', 'key4']:
    try:
        json.loads(normalize_data[key])
    except KeyError:
        raise serializers.ValidationError({'error': f'Field {key} is missing'})
    except TypeError:
        raise serializers.ValidationError({'error': f'Wrong format of {key}'})     

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章