Python自定义异常处理类

在C++中,你可能会使用异常处理(如try-catch)或者错误代码/枚举来返回错误信息。在Python中,虽然也有异常处理机制,但通常我们更倾向于使用异常来传递错误信息,而不是使用错误代码。

不过,如果你想要一个类似C++中回填错误信息的功能(例如,使用一个std::stringchar*来保存错误信息),你可以通过定义一个包含错误信息的异常类,或者使用可变对象(如列表或字典)来存储和传递错误信息。

以下是一个使用自定义异常类来传递错误信息的例子:

# 继承内置Exception类, 接受一个错误信息message字符串作为参数
class MyError(Exception):def __init__(self, message):self.message = message# __str__方法返回字符串def __str__(self):return self.messagedef some_function(input_value):if input_value < 0:# raise是一个关键字,用于触发一个异常# 控制流跳转到最近的异常处理块(即try-except块)raise MyError('Input value must be non-negative')#  > 0  处理逻辑try:some_function(-1)
except MyError as e:print(e)

运行结果: 

Input value must be non-negative

 

在这个例子中,我们定义了一个名为MyError的自定义异常类,它继承自内置的Exception类。这个类接受一个错误信息字符串作为参数,并在__str__方法中返回这个字符串。当我们调用some_function并传入一个负数时,它会抛出一个MyError异常,并带有相应的错误信息。在try-except块中,我们捕获这个异常并打印出错误信息。

如果你想要一个更类似于C++中回填错误信息的功能(不使用异常),你可以考虑使用可变对象(如列表或字典)来存储错误信息,并通过引用传递这些对象。但请注意,这种方法在Python中并不常见,因为Python的函数调用是通过值传递的(即使是可变对象),而不是通过引用传递。因此,你需要确保在函数外部正确地处理这些可变对象。

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

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

相关文章

【C++】——string模拟实现

前言 string的模拟实现其实就是增删改查&#xff0c;只不过加入了类的概念。 为了防止与std里面的string冲突&#xff0c;所以这里统一用String。 目录 前言 一 初始化和销毁 1.1 构造函数 1.2 析构函数 二 迭代器实现 三 容量大小及操作 四 运算符重载 4.1 bool…

Unity【入门】脚本基础

Unity脚本基础 文章目录 1、脚本基本规则1、创建规则2、MonoBehavior基类3、不继承MonoBehavior的类4、执行的先后顺序5、默认脚本内容 2、生命周期函数1、概念2、生命周期函数有哪些3、生命周期函数支持继承多态 3、Inspector窗口可编辑的变量4、Mono中的重要内容1、重要成员2…

冯喜运:5.31晚间黄金原油行情分析及尾盘操作策略

【黄金消息面分析】&#xff1a;周五&#xff08;5月31日&#xff09;&#xff0c;最新发布的数据显示&#xff0c;美国4月核心PCE物价指数月率录得0.2%&#xff0c;低于预期(0.3%)&#xff0c;经济学家认为&#xff0c;核心指数比整体指数更能反映通胀。除此之外&#xff0c;美…

PyTorch 加载模型出现 got an unexpected keyword argument ‘assign‘

PyTorch 加载模型出现 got an unexpected keyword argument ‘assign’ flyfish 错误提示 common\_base_model.py", line 433, in loadmodel.load_state_dict(content["state_dict"], strictTrue, assignTrue) TypeError: Module.load_state_dict() got an un…

xjoi题库一级九段题解(c语言版)

金字塔 时间&#xff1a;0.1s 空间&#xff1a;128M 题目描述&#xff1a; 小明发现电脑可以打印出一些简单有趣的图形&#xff0c;比如金字塔&#xff1a; **** ***** 小明希望能够过更便捷的打印出金字塔&#xff0c;比如输入n&#xff0c;就输出高度为n的金字塔。请你帮助…

HackTheBox-Machines--Sense

Popcorn 测试过程 1 信息收集 服务器开启80、443端口 80端口 访问 80 跳转到 443 – https://10.129.196.51/ &#xff0c;该页面是 pfSense 登录界面&#xff0c;默认密码是&#xff1a; admin/pfSense&#xff0c;使用默认账号密码登录失败 目录扫描 ./gobuster dir -u htt…

# 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项

为什么会突然想到写这么一个大杂烩的博文呢&#xff0c;必须要从笔者几年前的一次面试说起 当时的我年轻气盛&#xff0c;在简历上放了自己的博客地址&#xff0c;而面试官应该是翻了我的博客&#xff0c;好几道面试题都是围绕着我的博文来提问 其中一个问题&#xff0c;直接…

深度神经网络——什么是线性回归?

线性回归是一种用于预测或可视化的算法 两个不同特征/变量之间的关系。 在线性回归任务中&#xff0c;要检查两种变量&#xff1a; 因变量和自变量。 自变量是独立的变量&#xff0c;不受其他变量的影响。 随着自变量的调整&#xff0c;因变量的水平将会波动。 因变量是正在研究…

三体中的冯诺依曼

你叫冯诺依曼&#xff0c;是一位科学家。你无法形容眼前的现态&#xff0c;你不知道下一次自己葬身火海会是多久&#xff0c;你也不知道会不会下一秒就会被冰封&#xff0c;你唯一知道的&#xff0c;就是自己那寥寥无几的科学知识&#xff0c;你可能会抱着他们终身&#xff0c;…

《QT实用小工具·六十九》基于QT开发的五子棋AI游戏

1、概述 源码放在文章末尾 该项目实现了五子棋对战AI&#xff0c;可以享受和AI下棋的快乐&#xff0c;项目实现思路如下&#xff1a; 博弈树 ●Alpha-Beta剪枝(性能提高较大) ●启发式搜索(性能提高较大) ●落子区域限制(性能提高较大) ●Zobrist哈希(性能小幅提升) ●Qt…

数据治理基础知识

文章目录 基本概念相关名词术语数据治理对象 基本概念 1&#xff09;从管理者视角看数据治理 数据治理是企业发展战略的组成部分&#xff0c;是指导整个集团进行数字化变革的基石&#xff0c;要将数据治理纳入企业的顶 层规划&#xff0c;各分/子公司、各业务部门都需要按照企…

日有所思的梦想

概述 俗话说&#xff0c;日有所思&#xff0c;夜有所梦&#xff0c;那所谓的梦想&#xff0c;不正是梦中的想法吗&#xff1f; 但随着日常生活的柴米油盐&#xff0c;平淡无奇的每天&#xff0c;以及看似忙忙碌碌&#xff0c;却实际碌碌无为的我们&#xff0c;你的梦想是否早…

软考高级系统规划与管理师适合什么人考?有什么优势?

系统规划与管理师适合什么人考&#xff1f; 适合以下几类人群&#xff1a; 1. 信息技术服务规划人员&#xff1a;从事信息技术服务规划工作&#xff0c;负责制定和优化IT服务规划的人 2. 信息系统运行维护管理人员&#xff1a;负责信息系统日常运行维护、确保系统稳定性和可…

【前端】Mac安装node14教程

在macOS上安装Node.js版本14.x的步骤如下&#xff1a; 打开终端。 使用Node Version Manager (nvm)安装Node.js。如果你还没有安装nvm&#xff0c;可以使用以下命令安装&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash 然后关…

变压器励磁涌流MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 变压器励磁涌流的产生机理 1、变压器是电力系统的关键部分&#xff0c;在实际的 运行中&#xff0c;变压器需要进行相应的充电&#xff0c;而在充电的过 程中&#xff0c;就需要进行开合闸作业。在开合闸作业…

【Linux】磁盘结构文件系统软硬链接动静态库

目录 一.磁盘结构 1、磁盘的物理结构 2、磁盘的存储结构 3、磁盘的逻辑结构 二.文件系统 1、对IO单位的优化 2、磁盘分区与分组 3、对分组的具体管理方法 4、文件操作 三.软硬链接 1、理解硬链接 2、理解软连接 3、理解.和.. 四、动静态库 1、什么是动静态库 2、…

关于laravel的一些基础问答

1 . 简述 ThinkPHP、Yii、CodeIgniter、Laravel的优缺点&#xff1f; ThinkPHP&#xff1a; 优点&#xff1a;中文文档丰富&#xff0c;易于学习和上手&#xff0c;适合国内开发者&#xff1b;社区活跃&#xff0c;有较多的资源和扩展可用&#xff1b;在国内应用广泛。缺点&a…

Flutter基础 -- Dart 语言 -- 基础类型

目录 0. 配置 1. 变量 1.1 弱类型 var Object dynamic 1.2 强类型 1.3 使用场景 var 简化定义变量 查询参数定义 返回的实例对象 2. 常量 final 和 const 2.1 相同点 类型声明可以省略 初始后不能再赋值 不能和 var 同时使用 2.2 不同点 const 需要确定的值 …

线性代数|机器学习-P1课程简介

文章目录 1. 书籍下载2. 正文 1. 书籍下载 链接&#xff1a;https://pan.baidu.com/s/1QbK0enLh0x4nU1c4Tqwlkw 提取码&#xff1a;r7ft 本课程回顾线性代数在概率论、统计学、优化和深度学习中的应用。是GILBERT STRANG教授的有一个经典的课程。课程将线性代数分为如下部分&a…

android项目多语言文件统一处理工具

0&#xff0c;建议首先创建3个文件夹&#xff1a; ①&#xff1a;1、values_all ②&#xff1a;2、xml ③&#xff1a;3、output 1&#xff0c;android项目多语言strings.xml文件复制到一个文件夹&#xff1a; import os import shutildef find_string_xml(directory):string…