如何在类加载期间捕获异常

时间:2015-07-01 05:34:27

标签: python sqlite exception-handling sqlalchemy

我有一个SQLite数据库并使用SQLAlchemy将表映射到类。生成布局是我有一个父表和一个子表。父类可以有多个子节点,子节点只有一个父节点。将子项加载到自定义集合类中,以进行各种前后处理。

在加载Child类时,有时可能会引发异常。这有些异常操作,通常是由于数据库损坏或极其旧的数据库,但它确实需要干预。但是,我似乎没有任何方法可以捕获此异常。

作为一种解决方法,我假设不是引发异常,而是使用self.delete = True标记该类,并在加载到集合类时检查它。但它仍然引发了一个问题,即如何处理从数据库映射器加载类时可能引发的异常?

编辑: 我忘了提到异常发生在我的@reconstructor方法中,SQLAlchemy在加载对象后调用了

1 个答案:

答案 0 :(得分:0)

对此进行处理的一种相当简单的方法是在适当的and子句中包装对子项的访问。为了避免在整个地方都有try-except个条款,例如将关系包装在标准的python属性中:

try-except

显然,这不会处理从其他地方触发加载class Parent: # your current standard children relationship _children = relationship('Child') @property def children(self): # try accessing and possibly loading the children try: return self._children # catch and handle the possibly occuring exception except WhatEverException: handleException() 实例的情况,但它可能会启动。

当然,更好的选择是尝试避免例外。 但这当然在很大程度上取决于你实际谈论的例外情况。