我的任务是调试一个API.它的一个终结点处理创建和更新一些资源,如果资源无法正确更新,我想引发一个适当的异常.我收到了一个如下所示的函数:
from fastapi import APIRouter, HTTPException
router = APIRouter()
@router.post("/")
async def create_resource(body:dict) -> dict:
try:
...
except Exception as e:
raise HTTPException(status_code=404, detail="data not found")
函数内部可能出现的一个错误最好用409 response
来解释,因此我添加了如下所示的异常:
@router.post("/")
async def create_resource(body:dict) -> dict:
try:
...
if bad_condition:
raise HTTPException(status_code=409, detail="data points already exist")
except Exception as e:
raise HTTPException(status_code=404, detail="data not found")
据我所知,宽泛的try/except
条款抓住了我的错误,无论如何都提高了404 response
分.我希望能够在不过多修改函数的情况下引发409错误,而不是通用的404错误.在不重构函数本身的情况下引发此错误的最干净方法是什么?