2016-04-21 88 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