2016-04-21 44 views
0

我想序列化一個平凡的對象(只屬於/值), 我在我的課上有這種方法。python json序列化嘗試/除了

def to_json(self,client): 
    service=self._service 
    path="jsonphp/" 
    path+=client 
    if not os.path.exists(path): 
     os.makedirs(path) 
    with cdd(path): 
     print os.getcwd() 
     path=service+".json" 
     with open(path, 'w') as outfile: 
     try: 
      json.dump(self.__dict__, outfile) 
     except: 
      print "serialization failed" 

嘗試之前的整個部分/除了要導航到正確的文件夾。它似乎工作順利。但是當我使用這種方法時,它始終打印:serialization failed從我的except即使我的file.json被創建並且數據正確存儲在其中:{"_attr1": "On", "_attr2": "On", "_attr3": "Off"} 我認爲只有在發生錯誤時才訪問except塊。

我的問題是下面的問題:是否是「正常」的行爲try/except

如果不是,如何獲得有關我除了捕捉的異常的信息?

難道它是在代碼上的某處(在我呼籲to_json()之前)在那裏捕捉的豁免?

+0

縮進問題? –

+0

我不這麼認爲。你是指在這個函數調用之前的某個地方? – pwnsauce

回答

0

我覺得這更像是一個異常處理問題。由於您在整個編程過程中可能會有例外,所以正確處理它們非常重要。很少應該除非這麼寬泛,並且在你不明白爲什麼有例外的情況下,你應該打印異常。這將使您能夠搜索異常並確定問題的根本原因,並在繼續學習Python時幫助您。

更改您除了閱讀:

except Exception as e: 
      print "serialization failed", e 

這將打印確切例外您的控制檯,讓您查找,或尋求幫助。

+1

謝謝!隨着exeption打印出來,它使更多的感官! 我將努力更好地處理豁免。 問題是一個不可序列化的屬性。 – pwnsauce

+0

非常好。關於這一點,請閱讀Def,因爲您可以通過名稱處理每個已知的異常,並使用Exception Exception來捕捉您還沒有想到的事情,然後在出現時處理它們。祝你好運! – Chris