Exception异常处理体系详解
Python中内置了完整的Exception处理体系,包括抛出异常的raise语句、捕获并处理异常的try-except-finally语句以及派生自BaseException的内置的和自定义的异常类。但为了在FastAPI应用中友好地向endpoint用户传递异常信息,FastAPI使用HTTPException类、exception_handler装饰器以及middlerware中间件对用户代码中的Exception进行包装呈现。
1、使用HTTPException
HTTPException是一个派生自BaseException的异常类,但它同时可以把异常信息作为Http Response返回。这样当我们在router中,甚至在简单的业务代码中也可以raise一个HTTPException或者是派生至HTTPException的异常,从而向endpoint用户传递友好的异常信息。
1、如果不使用HTTPException那么客户端只能得到粗略不友好的异常信息
import uvicorn as uvicorn
from fastapi import FastAPI, HTTPException
app = FastAPI()
# 业务逻辑
def do_some_business_logic():
raise Exception("I do not want to do any work!")
@app.get("/")
async def index():
do_some_business_logic()
return "test exception"

2、使用了HTTPException,可以返回友好的异常信息,甚至可以自定义Response header
import http
import uvicorn as uvicorn
from fastapi import FastAPI, HTTPException
app = FastAPI()
# 业务逻辑
def do_some_business_logic():
raise Exception("I do not want to do any work!")
@app.get("/")
async def index():
try:
do_some_business_logic()
except Exception as e:

Python有完整的Exception处理体系,FastAPI为向endpoint用户友好传递异常信息,使用HTTPException类、exception_handler装饰器及middlerware中间件包装呈现异常。介绍了使用HTTPException返回友好信息、用exception_handler统一处理异常、用exception middlerware避免代码臃肿,可按需选择应用方式。

1435

被折叠的 条评论
为什么被折叠?



