丿忆梦灬微殇 2021-01-30 11:05 采纳率: 0%
浏览 20

在使用drf的时候为什么抛出Exception异常的时候会报TypeError?

 下面是测试抛出异常的代码:

                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网上很多都说要自定义下解析,然后再调用,但是这方法直接都不是我自己调用的,也走的不是异常模块,谁能帮忙看看怎么解决?


 
  • 写回答

0条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 有偿找一份verilog语言的cnn代码带讲解
      • ¥15 关于#mysql#的问题:mysql 组内排名,取各组的销售金额前10
      • ¥15 有人用过颜色传感器吗?
      • ¥50 求一个SQL长料切短料的优化排版算法
      • ¥15 python 删除TXT文档中小写字母
      • ¥15 ValueError: not enough values to unpack (expected 2, got 0)
      • ¥15 js怎么禁止修改域名
      • ¥15 Cursor为什么在Windows11打不开
      • ¥30 java调用javacv遇到的问题
      • ¥15 如何使用matlab画出带宽100Khz,时长100ms信号的LFM形式的时频图啊