50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
"""
|
|
Author: Yutang LI
|
|
Institution: SIAT-MIC
|
|
Contact: yt.li2@siat.ac.cn
|
|
"""
|
|
|
|
from fastapi import HTTPException
|
|
from typing import Any, Dict
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class APIError(HTTPException):
|
|
"""自定义API错误类"""
|
|
def __init__(self, status_code: int, detail: Any = None):
|
|
super().__init__(status_code=status_code, detail=detail)
|
|
logger.error(f"API Error: {status_code} - {detail}")
|
|
|
|
def handle_minio_error(e: Exception) -> Dict[str, str]:
|
|
"""处理MinIO相关错误"""
|
|
logger.error(f"MinIO operation failed: {str(e)}")
|
|
return {
|
|
"status": "error",
|
|
"data": f"MinIO operation failed: {str(e)}"
|
|
}
|
|
|
|
def handle_http_error(e: Exception) -> Dict[str, str]:
|
|
"""处理HTTP请求错误"""
|
|
logger.error(f"HTTP request failed: {str(e)}")
|
|
return {
|
|
"status": "error",
|
|
"data": f"HTTP request failed: {str(e)}"
|
|
}
|
|
|
|
def handle_validation_error(e: Exception) -> Dict[str, str]:
|
|
"""处理数据验证错误"""
|
|
logger.error(f"Validation failed: {str(e)}")
|
|
return {
|
|
"status": "error",
|
|
"data": f"Validation failed: {str(e)}"
|
|
}
|
|
|
|
def handle_general_error(e: Exception) -> Dict[str, str]:
|
|
"""处理通用错误"""
|
|
logger.error(f"Unexpected error: {str(e)}")
|
|
return {
|
|
"status": "error",
|
|
"data": f"Unexpected error: {str(e)}"
|
|
}
|