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

Python 异常处理 完整学习笔记

从基础、规范写法、常用异常、自定义异常、实操避坑 全整理适配你的代码习惯一、异常核心基础概念什么是异常代码运行时出现的错误、逻辑非法、参数不合法等导致程序强制终止的报错就是异常。主动抛出异常关键字只有raise是 Python主动抛异常的关键字。两种报错本质区别写法raise 错误信息❌ 非法写法不是业务异常是 Python 语法报错TypeError: exceptions must derive from BaseException写法Exception(错误信息)✅ 标准规范主动抛出业务异常可被正常捕获、识别。二、主动抛出异常 标准写法1. 万能通用写法日常开发首选不知道该用什么具体异常类型时统一用顶层父类Exception全覆盖、不报错、好维护。# 万能格式 raise Exception(自定义错误提示文本)2. 规范细分内置异常追求严谨时使用内置异常是 Python 自带分类对应不同错误场景AttributeError属性不存在适配你的 Config 配置类ValueError数值 / 参数非法KeyError字典键不存在TypeError数据类型错误示例# 属性不存在专用 raise AttributeError(配置类无此属性) # 数值错误专用 raise ValueError(年龄超出合法范围)三、异常捕获基础try...except作用拦截异常防止程序崩溃优雅处理错误。try: # 可能出错的代码 Config.set_attr(test, 123) except Exception as e: # 捕获异常并打印信息 print(执行失败, e)四、异常的传递与复用重新抛出原有异常try: 1 / 0 except: raise # 原样抛出上层异常不修改信息异常链式改写极少用了解即可五、自定义异常类重点理解1. 核心理解所有异常最终都继承自BaseException自定义异常只需要继承Python内置Exception类作用区分项目业务错误、系统错误让报错分类更清晰方便后期排查。2. 自定义异常 基础语法# 自定义业务异常基类 class BusinessError(Exception): 项目所有业务异常的父类 pass # 细分场景异常 class ConfigAttrError(BusinessError): 配置类属性不存在异常 pass class ParamError(BusinessError): 参数非法异常 pass3. 自定义异常 实战使用class Config: classmethod def set_attr(cls, name, value): if not hasattr(cls, name): # 抛自定义异常 raise ConfigAttrError(f配置项【{name}】不存在)4. 自定义异常进阶自定义错误信息class ConfigAttrError(Exception): def __init__(self, msg: str): self.msg msg super().__init__(self.msg) # 使用 raise ConfigAttrError(禁止修改私有配置属性)5. 自定义异常的价值区分系统异常和自己项目业务异常捕获时可以精准拦截try: Config.set_attr(xxx, 1) except ConfigAttrError: # 只处理配置错误 print(配置校验失败) except Exception: # 处理其他所有错误 print(系统未知错误)大型项目、SDK、库开发如你的LhPyQt5必备代码更规范。六、结合你代码的实操标准示例优化后 Config 配置类异常写法# 自定义配置专属异常 class ConfigError(Exception): pass class Config: is_generate_manager_account False classmethod def set_attr(cls, name: str, value): if not hasattr(cls, name): # 规范抛异常 raise ConfigError(f当前配置类不存在属性{name}) setattr(cls, name, value)七、关键避坑总结❌ 禁止raise 文字✅ 强制raise异常类(提示文字)日常开发优先raise Exception(提示)够用精细化开发使用对应内置异常 / 自定义异常异常不要滥用正常业务逻辑不要靠异常控制只用于「非法、错误场景」八、极简背诵口诀抛异常必带异常类不能直接抛字符串通用报错用 Exception细分场景用内置异常自定义异常继承 Exception用于业务分类异常用来兜底防崩溃不用来替代正常判断。

相关文章:

Python 异常处理 完整学习笔记

(从基础、规范写法、常用异常、自定义异常、实操避坑 全整理,适配你的代码习惯)一、异常核心基础概念什么是异常代码运行时出现的错误、逻辑非法、参数不合法等,导致程序强制终止的报错,就是异常。主动抛出异常关键字只…...

房产中介房源系统应该怎么选

随着房产中介行业数字化升级,传统人工记录、线下办公的模式已经无法适配当下高效的行业节奏。对于大大小小的房产经纪门店与团队而言,挑选一款适配自身经营规模、功能齐全、性价比出众的房产中介房源系统,是提升业务效率、规范门店管理、降低…...

别再只把MinIO当S3平替了!实战用它给K8s应用做个高性能图片存储后端

解锁MinIO在K8s中的高阶玩法:构建企业级图片存储服务的实战指南 当开发者第一次接触MinIO时,往往被其"与S3兼容"的特性吸引,简单将其视为开源版的AWS S3。但在真实的云原生环境中,MinIO的价值远不止于此——特别是在Kub…...

告别Keil,用CLion+STM32CubeMx开发G431:电赛信号处理项目环境搭建与调试心得

用CLionSTM32CubeMX重构电赛开发流:信号处理项目的现代工具链实践 当你在凌晨三点的实验室里盯着Keil的蓝色进度条,或是被IAR的许可证问题卡住关键调试步骤时,有没有想过——嵌入式开发工具链该进化了?去年TI杯电赛中,…...

APK Installer技术架构解析:Windows平台Android应用部署的创新实现

APK Installer技术架构解析:Windows平台Android应用部署的创新实现 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在跨平台应用部署领域,Andro…...

Pearcleaner:开源免费的macOS应用清理工具,为你的Mac带来全新体验

Pearcleaner:开源免费的macOS应用清理工具,为你的Mac带来全新体验 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾经发现&am…...

自动驾驶感知模块避坑指南:多边形碰撞检测(SAT/GJK)选型与性能优化

自动驾驶感知模块避坑指南:多边形碰撞检测(SAT/GJK)选型与性能优化 在自动驾驶系统的感知模块中,碰撞检测算法的选择直接影响着系统的实时性和安全性。当车辆以60公里/小时行驶时,每毫秒的延迟意味着16.7毫米的位移——…...

对比直接使用原厂 API 观察 Taotoken 在账单清晰度上的差异

对比直接使用原厂 API 观察 Taotoken 在账单清晰度上的差异 1. 多厂商账单管理的痛点 在实际开发过程中,当团队或个人需要同时使用多个大模型厂商的服务时,账单管理往往成为一个隐形的负担。每个厂商都有独立的计费系统、不同的结算周期和格式各异的账…...

Termux + Node.js + Express:在手机上5分钟搭建一个可外网访问的API接口

Termux Node.js Express:在手机上5分钟搭建一个可外网访问的API接口 想象一下,你正在咖啡馆里突发奇想,需要快速搭建一个API接口来测试某个前端功能,或者为团队演示一个简单的数据交互流程。传统方案需要打开电脑、配置开发环境…...

使用Taotoken CLI工具一键配置团队开发环境

使用Taotoken CLI工具一键配置团队开发环境 1. 安装Taotoken CLI工具 Taotoken CLI工具提供两种安装方式,适用于不同使用场景。对于需要频繁使用CLI的团队管理员,推荐全局安装: npm install -g taotoken/taotoken对于临时性配置或CI/CD环境…...

别再让网络卡脖子!手把手教你手动下载vcpkg依赖包,搞定99%的安装失败

突破网络限制:vcpkg依赖包手动下载全攻略 引言 在Windows平台进行C/C开发时,依赖管理一直是个令人头疼的问题。微软推出的vcpkg工具本应成为开发者的得力助手,但现实情况却是:当你满怀期待地输入vcpkg install命令后,往…...

Swoole协程+LLM流式响应实战:3步构建百万级稳定长连接通道(附压测对比数据)

更多请点击: https://intelliparadigm.com 第一章:Swoole协程LLM流式响应的核心价值与架构定位 在高并发 AI 服务场景中,传统同步阻塞模型难以应对 LLM 推理的长耗时与多轮交互特性。Swoole 协程通过用户态轻量级调度,将 I/O 等待…...

7大Masa Mods汉化包:如何让Minecraft中文玩家轻松使用全家桶工具?

7大Masa Mods汉化包:如何让Minecraft中文玩家轻松使用全家桶工具? 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 还在为Minecraft中Masa Mods的英文界面而困扰吗…...

客服机器人匹配客户语言风格?Agent系统学客户用词语气,沟通更亲切?

在电商客服领域,越来越多的商家发现:同样的问题,不同的客户问法完全不一样。有的客户说话直白干练,有的喜欢用表情包和网络梗,还有的语气温柔细腻。如果客服机器人的回复永远是标准模板式的 “亲爱的,您好”…...

pycatia:5大策略实现CATIA V5自动化设计效率提升300%

pycatia:5大策略实现CATIA V5自动化设计效率提升300% 【免费下载链接】pycatia python module for CATIA V5 automation 项目地址: https://gitcode.com/gh_mirrors/py/pycatia 在数字化制造浪潮中,传统CAD设计流程已成为制约企业创新速度的关键瓶…...

FPGA新手避坑指南:用Verilog手搓一个简易ROM,实现正弦波输出(附仿真)

FPGA数字波形生成实战:从Verilog手写ROM到多波形合成 在数字信号处理领域,波形生成是最基础也最核心的技能之一。不同于直接调用现成的IP核,通过Verilog手动实现ROM并存储波形数据,能让我们更深入地理解数字系统的工作原理。本文将…...

MuseTalk唇形同步技术完全指南:从入门到实战应用

MuseTalk唇形同步技术完全指南:从入门到实战应用 【免费下载链接】MuseTalk MuseTalk: Real-Time High Quality Lip Synchorization with Latent Space Inpainting 项目地址: https://gitcode.com/gh_mirrors/mu/MuseTalk 想要让静态人物开口说话&#xff0c…...

终极指南:如何用FanControl完美掌控Windows风扇控制

终极指南:如何用FanControl完美掌控Windows风扇控制 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/F…...

通过Taotoken用量看板清晰掌握团队api调用成本分布

通过Taotoken用量看板清晰掌握团队API调用成本分布 1. 用量看板的核心功能 Taotoken控制台的用量看板为团队管理者提供了多维度的API调用数据分析能力。该功能通过可视化图表和明细数据展示不同时间段的Token消耗情况,支持按项目、模型类型、开发者账号等关键维度…...

【安卓】Computer Launcher 手机秒变电脑-解锁

📢【应用名称】:Computer Launcher Pro 🔔【应用版本】:15.4 👀【应用大小】:14MB 🤖【适用平台】:安卓 ❓【使用说明】: 🗣️【软件介绍】 Compu…...

为什么你的Dify金融问答总被风控系统拦截?(审计日志缺失、意图分类漂移、证据链断裂三大致命漏洞)

更多请点击: https://intelliparadigm.com 第一章:Dify金融问答合规审计的底层逻辑与监管语境 金融领域大模型应用面临《金融数据安全分级分类指南》《生成式人工智能服务管理暂行办法》及银保监会AI治理白皮书等多重监管约束。Dify作为低代码LLM编排平…...

如何用TouchGal构建纯净的Galgame社区平台?

如何用TouchGal构建纯净的Galgame社区平台? 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next 在Galgame爱好者日益增长的今…...

OmenSuperHub深度解析:惠普游戏本硬件控制的底层实现与优化策略

OmenSuperHub深度解析:惠普游戏本硬件控制的底层实现与优化策略 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 在惠普OMEN游戏本用户群体中&a…...

香料香精行业:全球市场格局与中国发展机遇

一、行业概述:从原料到终端的“隐形冠军”香料香精是食品、日化、医药等行业的核心原料,虽用量微小,却直接决定产品的风味与品质。根据功能差异,香料(香原料)作为基础有机化合物,可通过调配形成…...

Dify租户隔离失效真实故障复盘(2024Q2某金融客户数据泄露事件深度解密)

更多请点击: https://intelliparadigm.com 第一章:Dify租户隔离失效真实故障复盘(2024Q2某金融客户数据泄露事件深度解密) 2024年4月,某头部城商行在使用自建 Dify v0.6.8 SaaS 平台时,发生跨租户数据可见…...

如何快速掌握ARP扫描技术:面向初学者的终极完整指南

如何快速掌握ARP扫描技术:面向初学者的终极完整指南 【免费下载链接】arp-scan The ARP Scanner 项目地址: https://gitcode.com/gh_mirrors/ar/arp-scan 你是否曾经好奇,为什么即使开启了防火墙,某些设备依然能被发现?为什…...

GaussDB索引管理避坑指南:为什么你建的索引没生效?查看与清理技巧

GaussDB索引管理避坑指南:为什么你建的索引没生效?查看与清理技巧 在数据库优化领域,索引就像图书馆的目录系统——设计得当能快速定位数据,但若使用不当反而会成为性能负担。许多GaussDB用户都有过这样的困惑:明明按照…...

五一出游预警!全国最堵人的30大景点,看看有你目的地吗?

​每年五一,都是全民出行的高峰期。不少人早早做好旅行规划,准备趁着假期出门散心。但有过出游经验的人都清楚,五一热门景区的常态:不是看风景,而是看人海。整理了五一人流量最高的30个国内热门景点,囊括经…...

生信总监,为何高薪裸辞

辞职有一阵子了,陆续有朋友好奇,问我怎么出来了。 现在回过头看这个选择,原因挺多,挑些能说的聊聊。 打工的目的说白了就是要给自己赎身,不可能打一辈子,也没有哪个公司能让你安安稳稳待到退休。 为什么…...

Node.js 项目接入 Taotoken 多模型服务的完整步骤

Node.js 项目接入 Taotoken 多模型服务的完整步骤 1. 准备工作 在开始接入 Taotoken 之前,需要确保 Node.js 开发环境已就绪。推荐使用 Node.js 16 或更高版本,并确保 npm 或 yarn 包管理器可用。如果项目尚未初始化,可以通过 npm init -y …...