python - 正确处理 psycopg2 错误
问题描述
我正在构建一个 Web 应用程序,用作我们的移动和电子应用程序的 Web API 服务器。我也在尝试正确设计我们的错误处理。
我使用Django
,Django Rest Framework
来RESTful API
实现。
对于psycopg2 errors
,我得到以下信息:
关系 "basicinformation" 的 "unifiedidd" 列不存在\n第 1 行:插入 profile.basicinformation (unifiedidd, firstname,...\n ^\nQUERY: INSERT INTO profile.basicinformation (unifiedidd, firstname, middlename, familyname,性别, 生日) VALUES ('8f38f402-ddee-11ea-bfee-ead0fcb69cd9'::uuid, 'Lily Francis Jane', '洛伊', '超凡', '男', '1990-03-20')\ nCONTEXT: PL/pgSQL 函数 inline_code_block 第 5 行在 SQL 语句\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)
- 我要确认的第一件事是,由于错误的内容,我认为输出整个内容不是一个好主意,对吧?因为它显示了实际的查询。这很有用,但可能仅用于开发人员使用的错误日志记录。
- 所以我假设我需要输出一条自定义消息。但鉴于可能会遇到大量错误,并且我认为不可能为每个错误创建自定义消息,我想只输出通配符错误消息,例如“遇到意外错误。请联系开发团队。”
- 而且,这个通配符错误消息对于开发人员和用户来说似乎也没有那么丰富。
我不确定如何正确处理异常并将其响应 API 客户端尽可能提供信息。
解决方案
推荐阅读
- reactjs - ReactJS ValidateForm onSubmit 需要点击几下
- swift - WKWebView Cookie 不起作用?
- json - 学说 json_array 配置键中的错误顺序
- c - 我无法确定它是否是质数
- android - 无法在 Android 上应用“io.fabric”插件
- razor - RAZOR PAGES .NET CORE 2.0,根据另一个下拉列表中的选择填充下拉列表
- html - 以角度压缩上传图像
- batch-file - 如何使用cmd从文本文件中删除第一行?
- android - 在某些设备上未调用 onAudioFocusChangeListener()
- sql - 将 Millis 公式化为 HHH:MM:SS