mirror of
https://github.com/JefferyHcool/BiliNote.git
synced 2026-05-22 00:30:28 +08:00
refactor(backend): 重构后端异常处理和模型管理
- 新增自定义异常类 BizException、NoteError 和 ProviderError - 优化了模型管理相关的逻辑,包括加载、删除和测试连接等功能 - 改进了 Douyin 下载器的错误处理 - 调整了任务重试逻辑和笔记生成的异常处理- 更新了相关组件和页面以适应新的异常处理机制
This commit is contained in:
0
backend/app/exceptions/__init__.py
Normal file
0
backend/app/exceptions/__init__.py
Normal file
6
backend/app/exceptions/biz_exception.py
Normal file
6
backend/app/exceptions/biz_exception.py
Normal file
@@ -0,0 +1,6 @@
|
||||
# exceptions/biz_exception.py
|
||||
|
||||
class BizException(Exception):
|
||||
def __init__(self, code: int, message: str = "业务异常"):
|
||||
self.code = code
|
||||
self.message = message
|
||||
33
backend/app/exceptions/exception_handlers.py
Normal file
33
backend/app/exceptions/exception_handlers.py
Normal file
@@ -0,0 +1,33 @@
|
||||
# middlewares/exception_handler.py
|
||||
|
||||
from fastapi import Request
|
||||
from fastapi import FastAPI
|
||||
|
||||
from app.enmus.exception import NoteErrorEnum
|
||||
from app.exceptions.biz_exception import BizException
|
||||
from app.exceptions.note import NoteError
|
||||
from app.exceptions.provider import ProviderError
|
||||
from app.utils.logger import get_logger
|
||||
from app.utils.response import ResponseWrapper as R
|
||||
import traceback
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
def register_exception_handlers(app: FastAPI):
|
||||
@app.exception_handler(BizException)
|
||||
async def biz_exception_handler(request: Request, exc: BizException):
|
||||
logger.error(f"BizException: {exc.code} - {exc.message}")
|
||||
return R.error(code=exc.code, msg=str(exc.message))
|
||||
@app.exception_handler(NoteError)
|
||||
async def note_exception_handler(request: Request, exc: NoteError):
|
||||
logger.error(f"NoteError: {exc.code} - {exc.message}")
|
||||
return R.error(code=exc.code, msg=str(exc.message))
|
||||
@app.exception_handler(ProviderError)
|
||||
async def provider_exception_handler(request: Request, exc: ProviderError):
|
||||
logger.error(f"供应商模块错误: {exc.code} - {exc.message}")
|
||||
return R.error(code=exc.code, msg=str(exc.message))
|
||||
|
||||
@app.exception_handler(Exception)
|
||||
async def general_exception_handler(request: Request, exc: Exception):
|
||||
logger.error(f"系统异常: {str(exc)}\n{traceback.format_exc()}")
|
||||
return R.error(code=500000, msg="系统异常")
|
||||
9
backend/app/exceptions/note.py
Normal file
9
backend/app/exceptions/note.py
Normal file
@@ -0,0 +1,9 @@
|
||||
# exceptions.py
|
||||
from app.enmus.exception import ProviderErrorEnum
|
||||
|
||||
|
||||
class NoteError(Exception):
|
||||
def __init__(self, message: str,code: ProviderErrorEnum) -> None:
|
||||
super().__init__(message)
|
||||
self.code=code
|
||||
self.message = message
|
||||
@@ -1,5 +1,12 @@
|
||||
# exceptions.py
|
||||
class ConnectionTestError(Exception):
|
||||
def __init__(self, message: str):
|
||||
from app.enmus.exception import ProviderErrorEnum
|
||||
|
||||
|
||||
class ProviderError(Exception):
|
||||
def __init__(self, message: str,code: ProviderErrorEnum) -> None:
|
||||
super().__init__(message)
|
||||
self.message = message
|
||||
self.code=code
|
||||
self.message = message
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user