正确处理psycopg2错误

时间:2020-08-14 05:46:25

标签: python error-handling django-rest-framework psycopg2 try-except

我正在构建一个Web应用程序,用作我们的移动和Electron应用程序的Web API服务器。我也在尝试正确设计我们的错误处理。

我使用DjangoDjango Rest Framework来实现RESTful API

对于psycopg2 errors,我得到以下信息:

关系“基本信息”的“列“ unifiedidd”不 存在\ n第1行:INSERT INTO profile.basicinformation(unifiedidd, 名字,... \ n ^ \ n查询: INSERT INTO profile.basicinformation(unifiedidd,firstname, 中间名,姓氏,性别,生日)VALUES ('8f38f402-ddee-11ea-bfee-ead0fcb69cd9':: uuid,'Lily Francis Jane', 'Luo Yi','Chao Fan','Male','1990-03-20')\ n上下文:PL / pgSQL 函数inline_code_block在SQL语句的第5行\ n“

在我的查看文件中,我正在捕获这些错误,例如:

def post(self, request, *args, **kwargs):
 try:
  return Response({"message": "Cool"},status=http_200_OK)
 except ProgrammingError as e:
  return Response({"message": str(e)},status=http_500_INTERNAL_SERVER_ERROR)
 except IntegrityError as e:
  return Response({"message": str(e)},status=http_500_INTERNAL_SERVER_ERROR)
 except Exception as e:
  return Response({"message": str(e)},status=http_500_INTERNAL_SERVER_ERROR)
  1. 我想确认的第一件事是,由于错误的内容,我认为输出整个内容不是一个好主意吗?由于它显示了实际的查询。这很有用,但可能仅用于开发人员使用的错误日志记录。
  2. 因此,我假设我需要输出自定义消息。但是鉴于可能会遇到大量错误,并且我认为不可能为这些错误中的每一个创建自定义消息,因此我正在考虑仅输出通配符错误消息,例如“遇到了意外错误。请联系开发团队。”
  3. 但是,此通配符错误消息对于开发人员和用户似乎也没有那么有用。

我不确定如何正确处理异常并将异常响应尽可能多地反馈给API客户端。

0 个答案:

没有答案