美文网首页Pythoner集中营Flask实践python进阶
博客系列:异常处理方式,Exception,自定义一个异常

博客系列:异常处理方式,Exception,自定义一个异常

作者: 我的昵称很霸气 | 来源:发表于2018-08-20 16:49 被阅读12次
    • 分享一个前后端分离(Python3 + Flask +Vuew)的个人博客,一个使用Python Flask 框架编写的个人博客。项目很轻。却很实用。
    • GitHub地址:哆啦瞎梦
    • 技术栈:Flask、Vue、Docker
    • 初始化,项目结构我就不再写了,之前写过了,没有的可以看我之前的文章。或者直接私信我,我特地准备了一个干净的模板

    # -*- coding: utf-8 -*-
    class ErrorCode:
        def __init__(self):
            pass
    
        Debug = 0
        Info = 1
        Warn = 2
        Error = 3
    
    
    class AppError(Exception):
        """
        统一应用错误对象,返回错误编码和消息
        """
    
        def __init__(self, msg="you've got a error!", code=ErrorCode.Warn, error_code=0):
            self.code = code
            self.msg = msg
            self.error_code = error_code
    
        def __str__(self):
            return self.msg
    
    
    class ParaValidateFailError(AppError):
        """
        参数验证失败
        """
    
        def __init__(self, msg="you've got a error!", code=400, error_code=None):
            self.code = code
            self.msg = msg
            self.error_code = error_code
    
    
    class NotFoundError(AppError):
        """
        缺失错误
        """
    
        def __init__(self, msg="you've got a error!", code=404, error_code=None):
            self.code = code
            self.msg = msg
            self.error_code = error_code
    
    
    class UnauthorizedError(AppError):
        """
        鉴权错误
        """
    
        def __init__(self, msg="you've got a error!", code=401, error_code=None):
            self.code = code
            self.msg = msg
            self.error_code = error_code
    
    
    class ValidationError(AppError):
        """
        参数错误
        """
    
        def __init__(self, msg="you've got a error!", code=400, error_code=None):
            self.code = code
            self.msg = msg
            self.error_code = error_code
    
    
    class MoreValidationError(AppError):
        """
        参数多出错误
        """
    
        def __init__(self, msg="you've got a error!", code=400, error_code=None):
            self.code = code
            self.msg = msg
            self.error_code = error_code
    
    
    class ConflictError(AppError):
        def __init__(self, msg="you've got a error!", code=409, error_code=None):
            self.code = code
            self.msg = msg
            self.error_code = error_code
    
    
    class ServerError(AppError):
        def __init__(self, msg="you've got a error!", code=500, error_code=None):
            self.code = code
            self.msg = msg
            self.error_code = error_code
    
    
    
    
    from werkzeug.exceptions import HTTPException
    
    
    class APIException(HTTPException):
        msg = 'sorry, we make a mistake'
    
        def __init__(self, msg=None, headers=None):
            if msg:
                self.msg = msg
            super(APIException, self).__init__(msg, None)
    
    
    class UnauthorizeError(APIException):
        code = 401
        msg = '权限错误!'
    

    这里 有两种方式返回的方法,目前我理解的是
    1.第一种 因为我已经做好了一个处理异常标记 所以 所有自定义异常都会经过那里被检测,统一格式返回
    2.跳过了我错误检测 直接返回数据 其实HTTPException 也是继承了Exception只是对它封装了一些方法 它返回的数据是text的 你可以在get_headers中修改json返回格式

    相关文章

      网友评论

        本文标题:博客系列:异常处理方式,Exception,自定义一个异常

        本文链接:https://www.haomeiwen.com/subject/hwuliftx.html