1

我有一种方法可以检查 JSON 有效负载是否存在 JSON 解码错误和 KeyErrors。由于某种原因,except带有 的语句KeyError被调用,但随后显示实际上没有KeyError,因为对象是None。这是代码:

    try:
        test_data = simplejson.loads(self.raw_data) # Loads the data in a dict to test for the right fields
        test_data["test"]

    except simplejson.decoder.JSONDecodeError as jsonErr:
        print 'JSON Malform Error: ', jsonErr
        pass
        return False

    except KeyError as keyErr:
        print 'JSON Validation Error: ', keyErr
        pass
4

2 回答 2

1

KeyError 可能是由 引发的,simplejson.loads而有问题的键可能真的是None. 没有足够的上下文说更多。如果您按要求提供回溯,它将有很大帮助。

于 2010-12-21T01:04:27.940 回答
0

查看回溯应该会告诉您在哪个模块中引发了异常。您可能还需要考虑使用ipdb手动来回调试此类问题。此外,您应该从 Python 的 Exception 类继承,以便通过引发和异常来更好地控制自己的代码。

利用 Python 的 getattr 和 setattr 函数也有很大帮助:

在 test_data 上使用getattr将让您知道在返回 None 的情况下何时引发自定义异常。

于 2010-12-21T01:25:03.107 回答