【发布时间】:2018-10-14 23:56:10
【问题描述】:
我的一些 api 视图是这样的:
try:
do_stuff()
except KeyError as exc:
logger.log(exc)
raise APIException("No good")
理想情况下,我不想像这样登录每一段代码,而是使用捕获 APIException 的通用异常处理程序,因此我将代码更改为:
try:
do_stuff()
except KeyError as exc:
raise APIException(exc)
exception_handler.py
def exception_handler(...):
logger.log(exc) # I want to log the KeyError...
return Response({"message": "try again sam"}, status_code=400)
我的问题是处理程序中的 exc 不是 keyerror 而是 apiexception,我能以某种方式从 sys.exc_info 或 stacktrace 获取 KeyError 吗?
【问题讨论】:
-
您可以尝试
logger.log(exc.args[0]),因为 KeyError 已传递给 APIException 构造函数。但是,如果您有不同的异常接收级别,您将不得不做更多的工作。
标签: python django python-3.x django-rest-framework