diff --git a/Python/exceptions.py b/Python/exceptions.py new file mode 100644 index 0000000..5f26295 --- /dev/null +++ b/Python/exceptions.py @@ -0,0 +1,43 @@ +class BaseException(Exception): + """ + 自定义基础异常类,支持错误消息、错误代码和参考URL + """ + + def __init__( + self, msg="An error occurred", code="E000", reference_url=None, *args, **kwargs + ): + self.msg = msg + self.code = code + self.reference_url = reference_url + self.details = kwargs.get("details", {}) + + # 构建完整错误消息 + message = f"[{self.code}] {self.msg}" + if self.reference_url: + message += f" (参考: {self.reference_url})" + + super().__init__(message, *args) + + def to_dict(self): + """返回异常的字典表示,方便转换为JSON""" + result = { + "error": { + "code": self.code, + "message": self.msg, + } + } + + if self.reference_url: + result["error"]["reference_url"] = self.reference_url + + if self.details: + result["error"]["details"] = self.details + + return result + + +class UserAccountNotFoundException(BaseException): + """用户账户不存在异常""" + + def __init__(self, user_id=None, *args, **kwargs): + super().__init__(msg="用户账户不存在", code="USER001", *args, **kwargs)