[英]How do I catch specific exceptions from pygresql?
我正在尝试改进我的错误处理,特别是我想处理来自 pygresql 的 IntegrityError 异常。
我收到错误“NameError: name 'IntegrityError' is not defined”所以我需要导入一些东西。 这可能吗? 我需要导入什么?
捕获您正在使用的模块引发的特定异常绝对是可能的,而且几乎总是可取的。
您是正确的,您需要从您正在使用的 package 导入该特定异常,因为它不是 python 内置异常的一部分。
查看pygresql
文档(大约 p.88) ,似乎大多数异常都是从pgdb
模块引发的。
潜在地;
from pgdb import IntegrityError
# more code...
try:
db.insert(obj) # or whatever data access methods you have
except IntegrityError as e:
# handle the exception
print(str(e))
或者它可能pgdb
模块在pygresql
模块内,所以它可能from pygresql.pgdb import IntegrityError
。 实际的导入路径可能会有所不同,但语法如上。
经过一天的大部分时间,我发现异常是在 pgdb 的 Connection object 中定义的(即使您使用的是 pg 接口)。 在这种情况下,我使用了 Flask 的 @app.errorhandler 装饰器,但它仍应显示需要导入的内容以及如何使用它。
from pgdb import Connection
@app.errorhandler(Connection.IntegrityError)
def handle_IntegrityError(e):
return(str(e), 409)
如果 pygresql 将这些因素排除在外,那将会很有帮助,因为它会减少混乱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.