You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
812 B
Python
38 lines
812 B
Python
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 = "未认证"
|