FastAPI 中如何自定义异常处理?

推荐答案

在 FastAPI 中,可以通过自定义异常处理器来捕获和处理特定的异常。以下是一个示例,展示了如何自定义异常处理:

-- -------------------- ---- -------
---- ------- ------ -------- -------------- -------
---- ----------------- ------ ------------

--- - ---------

----- ---------------------------
    --- -------------- ----- -----
        --------- - ----

---------------------------------------
----- --- --------------------------------- -------- ---- -----------------
    ------ -------------
        ----------------
        ------------------- ------- ---------- --- --------- ---------
    -

-----------------------------
----- --- -------------------------
    ----- -------------------------- -----

在这个示例中,我们定义了一个自定义异常 CustomException,并通过 @app.exception_handler 装饰器注册了一个异常处理器 custom_exception_handler。当 CustomException 被抛出时,FastAPI 会自动调用这个处理器,并返回一个自定义的 JSON 响应。

本题详细解读

自定义异常类

首先,我们定义了一个自定义异常类 CustomException,它继承自 Python 的 Exception 类。这个异常类可以包含任何你需要的额外信息,比如在这个例子中,我们传递了一个 name 参数。

自定义异常处理器

接下来,我们使用 @app.exception_handler 装饰器来注册一个异常处理器。这个处理器会捕获所有 CustomException 类型的异常,并返回一个自定义的 JSON 响应。

在这个处理器中,我们返回了一个 JSONResponse,并设置了自定义的状态码(418)和响应内容。

触发自定义异常

最后,我们在路由处理函数中抛出自定义异常 CustomException,以测试我们的异常处理器。

当访问 /custom-exception 路由时,FastAPI 会捕获 CustomException 并调用我们定义的异常处理器,返回自定义的 JSON 响应。

纠错
反馈