from __future__ import annotations from typing import Any class ItiError(Exception): status_code = 500 message = "服务器错误" def __init__( self, message: str | None = None, *, code: int | None = None, status_code: int | None = None, data: Any = None, ) -> None: self.message = message or self.message self.code = code or status_code or self.status_code self.status_code = status_code or self.status_code self.data = data super().__init__(self.message) class BizError(ItiError): status_code = 400 message = "业务错误" class PermissionDenied(ItiError): status_code = 403 message = "权限不足" class Unauthorized(ItiError): status_code = 401 message = "未认证"