异常处理 Exceptions

Posted hzls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理 Exceptions相关的知识,希望对你有一定的参考价值。

异常处理 Exceptions

REST framework提供了异常处理,我们可以自定义异常处理函数。

from rest_framework.views import exception_handler

def custom_exception_handler(exc, context):
    # 先调用REST framework默认的异常处理方法获得标准错误响应对象
    response = exception_handler(exc, context)

    # 在此处补充自定义的异常处理
    if response is not None:
        response.data[status_code] = response.status_code

    return response

在配置文件中声明自定义的异常处理

REST_FRAMEWORK = 
    #配置异常句柄
    EXCEPTION_HANDLER: my_project.my_app.utils.custom_exception_handler

如果未声明,会采用默认的方式,如下

REST_FRAMEWORK = 
    EXCEPTION_HANDLER: rest_framework.views.exception_handler

例如:

补充上处理关于数据库的异常

from rest_framework.views import exception_handler as drf_exception_handler
from rest_framework import status
from django.db import DatabaseError

def exception_handler(exc, context):
    response = drf_exception_handler(exc, context)

    if response is None:
        view = context[view]
        if isinstance(exc, DatabaseError):
            print([%s]: %s % (view, exc))
            response = Response(detail: 服务器内部错误, status=status.HTTP_507_INSUFFICIENT_STORAGE)

    return response

 

REST framework定义的异常

  • APIException 所有异常的父类

  • ParseError 解析错误

  • AuthenticationFailed 认证失败

  • NotAuthenticated 尚未认证

  • PermissionDenied 权限决绝

  • NotFound 未找到

  • MethodNotAllowed 请求方式不支持

  • NotAcceptable 要获取的数据格式不支持

  • Throttled 超过限流次数

  • ValidationError 校验失败

以上是关于异常处理 Exceptions的主要内容,如果未能解决你的问题,请参考以下文章

未处理的异常。 RabbitMQ.Client.Exceptions.BrokerUnreachableException:指定的端点均不可到达

abap function module中的异常处理

Exceptions

Java 中的两种异常(Checked exceptions 和 Unchecked exceptions)

异常处理

Python 异常处理