如何获取SQLAlchemy引发的特定异常类型?

时间:2015-07-08 17:34:13

标签: python exception sqlalchemy

尝试在Python代码中处理SQLAlchemy引发的异常,我写了以下内容:

import sqlalchemy.exc as sqlalchemy_exc

try:
    ...
    db.session.commit()
except sqlalchemy_exc.SQLAlchemyError:
    raise

这不是一个好主意,因为处理的异常太宽了。如何获得特定的异常类型?

更新

@Dan在他的回答中提供了一个参考,其中可以找到几个解决方案。其中两人正在关注:

import sqlalchemy.exc as sqlalchemy_exc
    ...
    try:
        ...
    except:
        import sys
        print(sys.exc_info())

import sqlalchemy.exc as sqlalchemy_exc
    ...
    try:
        ...
    except:
        import logging
        logging.exception('')

1 个答案:

答案 0 :(得分:1)

您可以先尝试打印它,看看它是哪个例外:How to log python exception?

然后你可以修改你的代码来捕捉你不同处理的更具体的代码,最终将打印内容保留在最后的全部案例中 - 允许你识别你可能想要添加的其他特定异常到你的代码。

try:
    ...
except sqlalchemy_exc.ArgumentError:  # specific exception
    pass  # do something else here if you want
except sqlalchemy_exc.SQLAlchemyError:  # catch-all
    # keep the printing stuff if you want
    raise