首页 > 解决方案 > 子类 psycopg2 异常并重新引发自定义实例

问题描述

我希望能够扩展 psycopg2.DatabaseError 并执行以下处理:

class MyCustomException(psycopg2.DatabaseError):
    def additional_method(self):
        """ Perform aditional logic """
...

try:
    ... # call database
except psycopg2.DatabaseError as exc:
    if exc.diag.message_hint == 'my_expected_value':
        # raise MyCustomException keeping the info from the exc
    raise exc

这样我以后就可以根据异常类型在我的代码中执行一些自定义处理。目前,我还没有成功。即使我尝试手动将属性复制到新实例(或在初始化时提供它们),我也不会让它的行为与原始异常完全相同(这就是我的目标):例如,甚至虽然我将diag对象从原始异常复制到新实例,但新实例diag.sqlstateNone.

这甚至可能吗?有没有意想不到的缺点?

标签: python-3.xpsycopg2

解决方案


推荐阅读