#!/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__()