python json 序列化 try/except

python json serialization try/except

我正在尝试序列化一个普通对象(仅属性/值), 我的 class.

中有这个方法
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"

try/except 之前的整个部分是导航到正确的文件夹。它似乎工作顺利。但是当我使用这个方法时,它总是打印:serialization failed from my except 即使创建了我的 file.json 并且数据正确存储在其中:{"_attr1": "On", "_attr2": "On", "_attr3": "Off"} 我认为只有在发生错误时才会访问 except 块。

我的问题是:try/except 的 "normal" 行为是吗?

如果没有,如何获得有关我的 except 捕获的异常的信息?

它会不会是代码中某处(在我调用 to_json() 之前)的异常?

我发现这更像是一个异常处理问题。由于您在整个编程过程中很可能会遇到异常,因此正确处理它们很重要。 except 很少应该如此广泛,如果您不明白为什么会有异常,您应该打印异常。这将使您能够搜索异常并确定问题的根本原因,并在您继续学习时对您有很大帮助 Python。

将您的 except 更改为:

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

这会将确切的异常打印到您的控制台,并允许您查找或寻求帮助。