app_exception.py 2.88 KB
Newer Older
qunfeng qiu's avatar
qunfeng qiu committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
@Version: 1.0
@Python Version:3.6.6
@Author: ludq1
@Email: ludq1@chinaunicom.cn
@date: 2023/04/07 11:40:00
@Description:
"""

from .app_response import AppResponse
from .base_const import ConstResponseCode
from ..globalutility import Utility


class AppException(Exception):
    """
    自定义的异常类, 表示可控的异常,不依赖任何其他应用基础类
    """
    code: str = None
    message: str = None
    _status_code: int = None

    def __init__(self, code: str = None, message: str = None, status_code: int = 200):
        r"""
        初始化异常

        :param code
        :param message
        :param status_code
        """

        self.code: str = code or ConstResponseCode.CODE_SYS_ERROR
        self.message: str = message or ConstResponseCode.gen_msg_for_code(self.code)
        self.status_code = status_code
        self.my_response = AppResponse(code=self.code, message=self.message, status_code=status_code)

    def __str__(self):
        r"""
        字符串表示, 使用json字符串表示

        Returns:

        """
        return str(self.my_response)

    def __repr__(self):
        r"""
        字符串表示,使用 __str__ , 不会返回None,至少时 EMPTY字符串

        Returns:

        """
        return repr(self.my_response)

    def gen_err(self) -> dict:
        r"""
        生成带有 code,message的标准dict

        Returns:

        """
        return self.my_response.gen_dict()

    @property
    def status_code(self) -> int:
        r"""
        status_code 属性

        :return:
        """
        if self._status_code is None or self._status_code < 1:
            self._status_code = 200
        return self._status_code

    @status_code.setter
    def status_code(self, status_code: int):
        r"""
        status_code 属性

        :param status_code:
        :return:
        """
        self._status_code = status_code


class AppRuntimeException(Exception):
    """
    自定义的异常类, 区分其他的异常
    还用于返回给前端基础的异常信息,和在后端打印的详细异常信息
    """
    message: str = None
    detail: str = None
    code: str = None

    def __init__(self, message: str, detail: str = None, code: str = None):
        r"""
        初始化

        :param message
        :param detail
        """
        self.message: str = message
        self.detail: str = detail
        self.code: str = code

    def __str__(self):
        r"""
        字符串表示

        Returns:

        """
        return Utility.dict2jsonstr({"message": self.message, "detail": self.detail, "code": self.code})

    def __repr__(self):
        r"""
        字符串表示

        Returns:

        """
        return self.__str__()