Files
daily-paper/app/exceptions.py
T

28 lines
747 B
Python

"""业务异常体系 — 统一错误类型,供路由层和 service 层使用。
路由层通过 main.py 的 @app.exception_handler(AppError) 统一捕获,
转为对应 HTTP 状态码 + JSON 响应。
"""
from __future__ import annotations
class AppError(Exception):
"""所有业务异常的基类。"""
def __init__(self, message: str = "", *, detail: str = ""):
self.message = message or detail or self.__class__.__name__
super().__init__(self.message)
class NotFoundError(AppError):
"""资源不存在(404)。"""
class ValidationError(AppError):
"""请求参数校验失败(400)。"""
class ConflictError(AppError):
"""资源冲突(409)— 如锁冲突、并发任务冲突。"""