簡體   English   中英

為什么這除了被稱為? -Python

[英]Why is this except being called? - Python

我有一種方法可以檢查JSON負載以獲取JSON解碼錯誤和KeyErrors。 出於某種原因,帶有KeyErrorexcept語句將被調用,但隨后顯示實際上沒有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

KeyError可能是由simplejson.loads引發的,並且有問題的鍵實際上可能是None 沒有足夠的上下文可以說更多。 如果您按要求進行回溯,將大有幫助。

查看回溯應該可以告訴您引發異常的模塊。您可能還需要考慮使用ipdb手動來回調試調試此類將來的問題。 此外,您應該繼承自Python的Exception類,以便通過引發和排除對自己的代碼進行更多控制。

利用Python的getattr和setattr函數也有很多幫助:

在test_data上使用getattr將使您知道何時返回None的情況下何時引發自定義異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM