exctptions.py
- from rest_framework.views import exception_handler
- from .response import APIResponse  # 封装的Response
- from .logger import get_logger  # 封装的日志
- import traceback  # 详细的报错模块
- logger = get_logger('django')  # 封装的日志调用
- def custom_exception_handler(exc, context):
-     '''
-     :param exc: 报错原因:list index out of range
-     :param context: 报错详情:{'view': <home.views.TestView object at 0x7f857020cc70>, 'args': (), 'kwargs': {}, 'request': <rest_framework.request.Request: GET '/testView/'>}
-     :return:
-     '''
-     response = exception_handler(exc, context)
-     res = APIResponse(code=999, msg=response.data)
-     if response is None:
-         # 出了异常
-         res = APIResponse(code=999, msg='系统错误')  # 给前端看的
-         logger.error('服务器错误->错误原因:%s; 出错的view是:%s; 请求地址是:%s; 详细信息:%s' % (
-             str(exc),
-             str(context['view']),
-             str(context['request'].get_full_path()),
-             traceback.format_exc()  # 最详细的报错信息
-         ))  # 记录日志
-     return res
settings.py
- REST_FRAMEWORK = {
-     'EXCEPTION_HANDLER': 自定义的文件路径,  # 全局异常配置
- }
调用
- from rest_framework.exceptions import ValidationError
- # 全局异常 和 raise ValidationError() 都会被捕捉