2010-12-21 4 views
1

JSONデコードエラーとKeyErrorsのためにJSONペイロードをチェックするメソッドがあります。なんらかの理由で、KeyErrorexceptのステートメントが呼び出されていますが、実際にはというオブジェクトはNoneであることが示されています。ここでは、コードされた:KeyError例外は、おそらくsimplejson.loadsによってこれはなぜ呼び出されないのですか? - Python

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 
+2

'except KeyError'を削除し、トレースバックを与えます(この質問に答えるためにそこにあります)。 'raw_data'も役に立ちます。 –

+0

これはまさに何かを印刷するために例外をキャッチしてはならない理由です。 – Falmarri

+0

この質問は似ていますか? http://stackoverflow.com/questions/2946768 – DarenW

答えて

1

上昇させ、問題のキーは本当にNoneかもしれません。より多くのことを言うには文脈が足りません。あなたが尋ねられたようにトレースバックを与えるなら、それは大きく助けになるでしょう。

+0

ここにトレースバックがあります: トレースバック(直近の最後のコール): ファイル "./jsontest.py"、行44、__validate_data test_data ["test"] – skylerl

0

トレースバックを調べると、例外が発生したモジュールがわかります。ipdbを使用して、このような将来の問題を手動でデバッグすることもできます。さらに、PythonのExceptionクラスを継承することで、独自のコードを持ち上げたり除外したりして、より多くのコントロールを行うことができます。 PythonのGETATTRとSETATTR機能を利用

は、あまりにも多くのことを助ける:TEST_DATAにgetattrを使用して

は、そのどれもが返されないことをイベントでカスタム例外を発生させるときにお知らせします。

関連する問題