当前位置: 首页 > news >正文

【Django-ninja】在django ninja中处理异常

1. 直接抛内置异常

Django ninja内置了一些常用异常类。

from ninja.errors import HttpError@api.get("/some/resource")
def some_operation(request):if True:raise HttpError(503, "Service Unavailable. Please retry later.")

2.  覆写异常类

可以覆写内置异常类的handler,改变返回结果的内容。

from ninja.errors import ValidationError
...@api.exception_handler(ValidationError)
def validation_errors(request, exc):return HttpResponse("Invalid input", status=422)

3. 自定义异常类

以创建一个500服务不可用异常类为例。

要实现这一点,你需要:

  1. 自定义一个ServiceUnavailableError
  2. 使用 api.exception_handler 为ServiceUnavailableError异常添加一个处理函数
api = NinjaAPI()class ServiceUnavailableError(Exception):pass# initializing handler@api.exception_handler(ServiceUnavailableError)
def service_unavailable(request, exc):return api.create_response(request,{"message": "Please retry later"},status=503,)# some logic that throws exception@api.get("/service")
def some_operation(request):if random.choice([True, False]):raise ServiceUnavailableError()return {"message": "Hello"}

相关文章:

  • ANSI Escape Sequence 下落的方块
  • maven java 如何打纯源码zip包
  • “极简壁纸“爬虫JS逆向·实战
  • 微信小程序:父组件调用子组件的方法
  • 【OrangePi Zero2的系统移植】交叉编译工具链配置、wiringOP库、智能分类工程代码
  • 【Git教程】(一)基本概念 ——工作流、分布式版本控制、版本库 ~
  • 基于物联网的实时数据分析(简单介绍)
  • Linux下的文件权限与访问控制:守护你的数据宝藏
  • Open CASCADE学习|环形弹簧建模
  • 极狐GitLab 与 Datadog 的集成配置
  • 代码随想录算法训练营第三十三天丨[重看] 最大子数组、1143. 最长公共子序列/15.4 最长公共子序列
  • Linux中MySQL表名与@TableName中大小写关系
  • unity显示图片
  • Day7.
  • c#通过反射完成对象自动映射
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • es6(二):字符串的扩展
  • FastReport在线报表设计器工作原理
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaScript设计模式与开发实践系列之策略模式
  • Joomla 2.x, 3.x useful code cheatsheet
  • laravel 用artisan创建自己的模板
  • mysql外键的使用
  • node 版本过低
  • spring-boot List转Page
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 警报:线上事故之CountDownLatch的威力
  • 排序算法学习笔记
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #宝哥教你#查看jquery绑定的事件函数
  • $.ajax()
  • (6)设计一个TimeMap
  • (9)目标检测_SSD的原理
  • (poj1.2.1)1970(筛选法模拟)
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (算法)Travel Information Center
  • (推荐)叮当——中文语音对话机器人
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)Linux整合apache和tomcat构建Web服务器
  • ../depcomp: line 571: exec: g++: not found
  • .FileZilla的使用和主动模式被动模式介绍
  • .net core Swagger 过滤部分Api
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [Android]How to use FFmpeg to decode Android f...
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [C++]运行时,如何确保一个对象是只读的
  • [FxCop.设计规则]8. 也许参数类型应该是基类型
  • [HackMyVM]靶场Boxing
  • [HDU]2161Primes
  • [hibernate]基本值类型映射之日期类型
  • [Loadrunner参数化]一个文件输两列参数的取值
  • [Oh My C++ Diary]头文件使用之math.h与cmath