下面是测试抛出异常的代码:
for index, IotId in enumerate(kwargs['IotId_list']):
if IotId:
raise Exception('测试异常')
下面是处理异常的代码:
try:
dic = self.Api.APIRun(APIname, **kwargs)
except Exception as e:
res['code'] = 1003
res['msg'] = '调用 APIRun:%s 出错' % APIname
res['data'] = e
return res
报错:
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\base.py", line 202, in _get_response
response = response.render()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\django\template\response.py", line 105, in render
self.content = self.rendered_content
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\rest_framework\response.py", line 70, in rendered_content
ret = renderer.render(self.data, accepted_media_type, context)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\rest_framework\renderers.py", line 103, in render
allow_nan=not self.strict, separators=separators
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\rest_framework\utils\json.py", line 25, in dumps
return json.dumps(*args, **kwargs)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\json\__init__.py", line 238, in dumps
**kw).encode(obj)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\rest_framework\utils\encoders.py", line 67, in default
return super().default(obj)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\json\encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type Exception is not JSON serializable
上面那个是重新封装的一个接口类,因为涉及到数据格式的处理,所以我就想如果格式处理错误,就抛出个异常,但是在原来的django里面用还好着呢,但是放到drf里面为什么会直接调用一个json.dumps网上很多都说要自定义下解析,然后再调用,但是这方法直接都不是我自己调用的,也走的不是异常模块,谁能帮忙看看怎么解决?