【问题标题】:How to get particular exception type that was raised by SQLAlchemy?如何获取 SQLAlchemy 引发的特定异常类型?
【发布时间】:2015-09-26 18:43:46
【问题描述】:

为了在我的 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('')

【问题讨论】:

    标签: python exception sqlalchemy


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-26
      • 2021-04-02
      • 2012-02-12
      • 1970-01-01
      • 2011-03-20
      • 2021-03-06
      相关资源
      最近更新 更多