当前位置: 首页 > 知识库问答 >
问题:

快速 API:全局处理异常

越嘉石
2023-03-14

我正在尝试让exception_handler从事一个大型项目。但是,异常处理程序未按预期运行。关于我可能缺少什么的任何建议?

简化项目结构:


project
   __init__.py
   main.py
   common
     __init__.py
     ex_handler.py


我有上述项目结构

app.py公司

app = FastAPI()

app.include_route(xyz)

我正在将此对象导入exception_handler。py,它具有处理所有应用程序相关异常的代码

from project.main import app

@app.exception_handler(CustomException)
def handle_custom_ex(request: Request, exception: CustomException):
    ...

但是,异常处理程序未按预期运行。如果我将exception_handler移动到app。皮,它起作用了。

参考: https://fastapi.tiangolo.com/tutorial/handling-errors/?h=exception#install-custom-exception-handlers

共有1个答案

郜昊苍
2023-03-14

我认为您想采用另一种方式,即将< code>exception_handler导入到您的< code>main.py中:

# exception_handler.py
class MyException(Exception):
    def __init__(self, name: str):
        self.name = name

# main.py
from project.common.exception_handler import MyException
...

在文档中,他们在main.py中定义类,然后可以在FastAPIapp对象中使用它。

请注意,您需要从要使用自定义异常类的任何模块执行此操作。

 类似资料:
  • 统一错误处理 文档:https://eggjs.org/zh-cn/tutorials/restful.html 自定义一个异常基类 // app / exceptions / http_exceptions.js class HttpExceptions extends Error { constructor(msg='服务器异常', code=1, httpCode=400) {

  • Middleware: 全局异常处理 我们在岩浆的实例其实已经注意到了,compose 的连接方式,让我们有能力精确控制异常。 Koa中间件最终行为强依赖注册顺序,比如我们这里要引入的异常处理,必须在业务逻辑中间件前注册,才能捕获后续中间件中未捕获异常,回想一下我们的调度器实现的异常传递流程。 <?php class ExceptionHandler implements Middleware

  • 在做android项目开发时,大家都知道如果程序出错了,会弹出来一个强制退出的弹出框,这个本身没什么问题,但是这个UI实在是太丑了,别说用户接受不了,就连我们自己本身可能都接受不了。虽然我们在发布程序时总会经过仔细的测试,但是难免会碰到预料不到的错误。 今天就来自定义一个程序出错时的处理,类似iphone的闪退。(虽然闪退也是用户不愿意看到的,但是在用户体验上明显比那个原生的弹窗好多了) 废话不多

  • 问题内容: 有没有一种方法可以在Java中创建全局异常处理程序。我想这样使用: 处理程序可能无法捕获在主体中引发的异常。 马丁 问题答案: 使用Thread.setDefaultUncaughtExceptionHandler。有关示例,请参见Rod Hilton的“ Global Exception Handling ”博客文章。

  • 有没有办法在泽西进行全局异常处理?与其单个资源具有try/catch块,然后调用一些方法来清理所有要发回客户端的异常,我希望有一种方法可以将其放在实际调用资源的地方。这可能吗?如果是这样,怎么做? 相反,where会向Jersey servlet抛出某种Jersey配置的异常: 有: 其中异常将被抛出到我可以拦截并从那里调用的东西。 这实际上只是为了简化所有Jersey资源,并确保返回给客户机的异

  • 本文向大家介绍springboot全局异常处理详解,包括了springboot全局异常处理详解的使用技巧和注意事项,需要的朋友参考一下 一、单个controller范围的异常处理 说明: 在controller中加入被@ExceptionHandler修饰的类即可(在该注解中指定该方法需要处理的那些异常类) 该异常处理方法只在当前的controller中起作用 二、全部controller范围内起