项目中自定义python异常类

作为一个初学者 ,在github上看到一个项目中异常文件,我也不知道当时为什么这么写,越来越觉得写得是不是有问题,所以我先写一遍我认为是对的,在看一下那个项目怎么写的以及我为什么 认为有问题 

首先定义异常基类

class Error(Exception):"""Base class for exceptions in this module."""pass

自定义异常类

class JsonPathFindError(Error):"""JsonPath查找错误"""def __init__(self, jsonpath:str):self.jsonpath = jsonpathdef __str__(self):return f'JsonPath 取值失败,表达式:{self.jsonpath}'

调用自己定义的异常

def test_exception_case2():"""jsonpath找不到抛出异常"""res = {'a':1, 'b':{'a':2}}jsonpath = '$.c'value = findall(jsonpath, res)if value:print(value[0])else:raise JsonPathFindError(jsonpath)

运行结果 

common.errors.JsonPathFindError: JsonPath 取值失败,表达式:$.c

接下来 看一下我遇到的项目怎么写的

class ErrorMixin:"""错误基类"""def __init__(self, msg: str) -> None:self.msg = msgdef __str__(self) -> str:return self.msg
class JsonPathFindError(ErrorMixin, ValueError):"""JsonPath查找错误"""def __init__(self, msg: str) -> None:super().__init__(msg)

我的想法一:

在这个例子中,基类直接pass,然后JsonPathFindError重写__init__、__str__方法,这样是不是 更好,我的理由是(1)既然自定义类当然有自定义内容,不止是名称(2)ErrorMixin的__str__其实也不用写,效果一样

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/50774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stm32入门-----ADC模数转换器(理论篇——上)

目录 前言 一、ADC模数转换器 1.简介 2.ADC的结构 3.输入通道 4.转换模式 5.触发控制 6.数据对齐 7.转换时间 8.校准 前言 本期就开始学习ADC模数转换器,这个大家在学习51单片机的时候应该就接触过了,实际上就是把模拟电压转换为…

YOLOv5改进 | 卷积模块 | 即插即用的递归门控卷积gnConv

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录: 《YOLOv5入门 改…

认识到自己的无知,需要一定的智慧

知识本是补药,却被变成毒药——“新无知”的三种表现 今天,一个人如果把评书、演义、宫廷剧当作真实历史,把当年从教科书上学来的过时理论当做“观世界”的金科玉律,并以此嘲笑别人“无知”的,属于典型的“新古人”—…

线程的同步和优先级

文章目录 前言一、优先级和同步各是什么?二、使用方法 1.线程的优先级2.线程的同步总结 前言 线程不仅可以实现代码的单线程运行和并发运行,在线程安全的情况下,还可以实现共同处理相同的系统资源。该篇文章还介绍了开发者如何设置线程运行的…

UniApp 打包项目为桌面端 exe 文件

引言 随着跨平台开发的需求日益增长,UniApp 成为了开发者们的首选之一。通过 UniApp,你可以使用 Vue.js 的语法结构和组件系统来构建原生应用、Web 应用甚至是桌面应用。本文将详细介绍如何使用 UniApp 将你的项目打包成 Windows 桌面端的 exe 文件。 …

【数据结构】单链表带头双向循环链表的实现

一、链表的概念及结构 1.链表的概念 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。 2.链表的结构 一般讲的链表包括数据域和指针域: 二、链表的种类 实际中链表的结构…

【HashMap源码学习】

HashMap的底层结构 HashMap是基于分离链表法解决散列冲突的动态散列表。 1、在jdk7中,使用的是“数组 链表”,发生散列冲突的时候键值对会用头插法添加到单链表中; 2、在jdk8中,使用的是“数组 链表 红黑树”,发…

【Python】成功解决: [Errno 24] Too many open files

【Python】成功解决: [Errno 24] Too many open files 在Python编程中,遇到[Errno 24] Too many open files错误是一个常见的系统资源限制问题。这个错误表明你的程序尝试打开的文件数量超过了操作系统允许的最大文件描述符数量。在Linux和Unix系统中,每…

昇思25天学习打卡营第1天|简单深度学习

前言 昇思MindSpore是一个全场景深度学习框架,旨在实现易开发、高效执行、全场景统一部署三大目标。 其中,易开发表现为API友好、调试难度低;高效执行包括计算效率、数据预处理效率和分布式训练效率;全场景则指框架同时支持云、边…

从 Pandas 到 Polars 三十八:Polars 的“瘦身”功能

Polars 有一个内置工具来进行 dtype 瘦身。调用 shrink_dtype 表达式,它会根据列中的数据将列转换为需要最少内存量的 dtype。 shrink_dtype 是 Polars 中一个非常有用的函数,它用于优化 DataFrame 中列的数据类型,以减小内存占用并可能提高…

react子组件向父组件传参

在React中,子组件向父组件传参(或称为“通信”)通常通过事件回调的方式实现。父组件向子组件传递一个函数作为props,子组件在需要时调用这个函数,并可以通过参数的形式向父组件传递数据。 下面是一个简单的例子来说明…

C++之map和set封装以及哈希(unordered_map和unordered_set)的封装(仅代码)

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 C进阶​ ​​​​算法 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 目录 一. map和set封装 1.1红黑树 1.2map …

fatal: refusing to merge unrelated histories

出现本地仓库和远程仓库的代码合并不兼容问题,解决方法: 添加--allow-unrelated-histories,让git允许提交不关联的历史代码。 成功提交:

Nuitka,一个超厉害的 Python 库

在众多高级编程语言中,Python 以其简洁的语法和强大的功能深受广大开发者的喜爱。然而,Python 程序的执行速度常常成为其被诟病之处。今天,我们要介绍的 Nuitka,正是一款可以将 Python 代码编译成 C++ 代码的工具,从而大幅提升程序执行效率。那么,Nuitka 究竟是什么呢?它…

python基础知识点(蓝桥杯python科目个人复习计划75)

第一题:ip补充 题目描述: 小蓝的ip地址为192.168.*.21,其中*是一个数字,请问这个数字最大可能是多少? import os import sys# 请在此输入您的代码 print("255") 第二题:出现最多的字符 题目描…

gitee的fork

通过fork操作,可以复制小组队长的库。通过复制出一模一样的库,先在自己的库修改,最后提交给队长,队长审核通过就可以把你做的那一份也添加入库 在这fork复制一份到你自己的仓库,一般和这个项目同名 现在你有了自己的库…

git 学习总结

文章目录 一、 git 基础操作1、工作区2、暂存区3、本地仓库4、远程仓库 二、git 的本质三、分支git 命令总结 作者: baron 一、 git 基础操作 如图所示 git 总共有几个区域 工作区, 暂存区, 本地仓库, 远程仓库. 1、工作区 存放项目代码的地方,他有两种状态 Unm…

Vue3时间选择器datetimerange在数据库存开始时间和结束时间

♥️作者:小宋1021 🤵‍♂️个人主页:小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油&#xff01…

什么是埋点?前端如何埋点?

什么是埋点 “埋点” 是一种在应用程序或网站中插入代码的技术,用于收集用户行为数据或特定事件的信息。它是用于分析和监控用户行为、应用性能和其他关键指标的一种常用方法。通过在特定位置插入代码或调用特定的 API,开发人员可以捕获有关用户如何与应…

a,a,a【0】,a【0】,指针解析数组,用作(左值,右值)的区别

a,&a,a【0】,&a【0】,指针解析数组,用作(左值,右值)的区别