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

Python错误和异常处理完全指南:从小白到高手的详细教程

本文全面讲解Python中的错误和异常处理机制,从基础概念到高级用法,帮你构建健壮的Python程序。1. 为什么需要异常处理?在编程中,错误是不可避免的。想象一下:你写了一个读取文件的程序,但文件不存在;或者计算用户输入的数据,但用户输入了字母而不是数字。没有异常处理,程序会直接崩溃,给用户带来糟糕的体验。异常处理的好处:提高程序的稳定性和健壮性提供有意义的错误信息允许程序优雅地恢复或退出便于调试和维护2. Python错误类型全解析2.1 语法错误(SyntaxError)语法错误是程序在运行前就被Python解释器发现的错误,程序无法执行。# 示例1:缺少冒号 if True print("Hello") # ❌ SyntaxError: expected ':' # 示例2:括号不匹配 print("Hello" # ❌ SyntaxError: unexpected EOF while parsing # 示例3:错误的关键字 whle True: # ❌ SyntaxError: invalid syntax pass如何解决:仔细检查错误提示的行使用IDE(如PyCharm、VSCode)的语法高亮功能注意缩进、括号、冒号等细节2.2 运行时错误(异常)运行时错误发生在程序执行期间,Python用异常来表示这类错误。# 示例1:除零错误 result = 10 / 0 # ❌ ZeroDivisionError: division by zero # 示例2:名称错误 print(undefined_variable) # ❌ NameError: name 'undefined_variable' is not defined # 示例3:类型错误 "2" + 2 # ❌ TypeError: can only concatenate str (not "int") to str3. Python异常类层次结构了解异常类的继承关系有助于更好地处理异常:BaseException ├── SystemExit ├── KeyboardInterrupt ├── GeneratorExit └── Exception ├── ArithmeticError │ ├── ZeroDivisionError │ ├── FloatingPointError │ └── OverflowError ├── LookupError │ ├── IndexError │ └── KeyError ├── OSError │ ├── FileNotFoundError │ ├── PermissionError │ └── TimeoutError ├── TypeError ├── ValueError ├── AttributeError ├── NameError └── 更多...4. 基础异常处理:try...except4.1 基本语法try: # 可能引发异常的代码 result = 10 / 0 except ZeroDivisionError: # 处理特定异常 print("错误:不能除以零!")4.2 多种异常处理# 方法1:多个except块 try: num = int(input("请输入一个数字: ")) result = 100 / num print(f"100 / {num} = {result}") except ValueError: print("错误:请输入有效的数字!") except ZeroDivisionError: print("错误:不能除以零!") except Exception as e: # 捕获所有其他异常 print(f"发生了未知错误: {type(e).__name__}: {e}") # 方法2:一个except块处理多个异常 try: # 可能引发多种异常的代码 data = {"name": "Alice"} print(data["age"]) # 可能引发KeyError num = int("abc") # 可能引发ValueError except (KeyError, ValueError) as e: print(f"数据错误: {e}") # 方法3:分别处理但共享部分代码 try: file = open("不存在的文件.txt", "r") content = file.read() except FileNotFoundError as e: print(f"文件未找到: {e}") # 记录日志或执行其他操作 except IOError as e: print(f"IO错误: {e}") # 记录日志或执行其他操作5. 完整的异常处理结构def divide_numbers(): """一个完整的异常处理示例""" try: # 1. 可能引发异常的代码 numerator = float(input("请输入被除数: ")) denominator = float(input("请输入除数: ")) result = numerator / denominator except ValueError as e: # 2. 处理值错误(输入不是数字) print(f"输入错误: 请输入有效的数字!详细信息: {e}") return None except ZeroDivisionError as e: # 3. 处理除零错误 print("数学错误: 除数不能为零!") return None except Exception as e: # 4. 处理其他所有异常 print(f"发生了意外错误: {type(e).__name__}: {e}") return None else: # 5. 如果没有异常发生,执行这里的代码 print(f"计算成功!{numerator} ÷ {denominator} = {result}") return result finally: # 6. 无论是否发生异常,都会执行的代码 print("=" * 40) print("计算过程结束,感谢使用!") print("=" * 40) # 测试各种情况 if __name__ == "__main__": # 测试正常情况 print("测试1: 正常计算") divide_numbers() # 输入: 10, 2 print("\n测试2: 除零错误") divide_numbers() # 输入: 10, 0 print("\n测试3: 输入错误") divide_numbers() # 输入: abc, 26. 抛出异常:raise语句有时我们需要主动引发异常:6.1 基本用法def process_age(age): """处理年龄,验证合理性""" if not isinstance(age, (int, float)): raise TypeError("年龄必须是数字") if age 0: raise ValueError("年龄不能为负数") if age 150: raise ValueError("年龄超过合理范围") if age = 18: return "成年人" else: return "未成年

相关文章:

Python错误和异常处理完全指南:从小白到高手的详细教程

本文全面讲解Python中的错误和异常处理机制,从基础概念到高级用法,帮你构建健壮的Python程序。 1. 为什么需要异常处理? 在编程中,错误是不可避免的。想象一下:你写了一个读取文件的程序,但文件不存在;或者计算用户输入的数据,但用户输入了字母而不是数字。没有异常处…...

2026届学术党必备的降重复率平台推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 正在逐渐发生改变的是学术写作模式,借助的是人工智能论文工具,它的核…...

霸王餐外卖接口对接中的签名校验、加密传输 Java 后端实现细节

霸王餐外卖接口对接中的签名校验、加密传输 Java 后端实现细节 在霸王餐(免费试吃)及外卖CPS分销系统的开发中,数据的安全性是核心命脉。由于涉及用户的隐私信息(如手机号、OpenId)以及核心的佣金计算逻辑,…...

▲基于DQPSK调制解调+LDPC编译码+扩频解扩通信链路matlab误码率仿真

目录 1.本系统整体构架 2.各个模块基本原理 2.1 DQPSK原理简介 2.2 DQPSK解调原理 2.3 LDPC编译码 2.4 扩频技术原理 3.仿真结果 4.完整程序下载 1.本系统整体构架 整个程序,我们采用如下的流程图实现: 2.各个模块基本原理 2.1 DQPSK原理简介 …...

文字识别OCR 在线工具 vs OCR API 接口平台:普通用户和开发者该怎么选?

随着 AI 发展,OCR 已经成了办公、学习、开发必备工具。 但现在市面上的 OCR 工具大致分两类: 在线 OCR 网站(网页直接用) OCR API 接口平台(系统对接用) 很多人不知道该怎么选,我从【普通用…...

AnimateDiff与Three.js结合:Web端3D文生视频实践

AnimateDiff与Three.js结合:Web端3D文生视频实践 最近在折腾AI视频生成,发现一个挺有意思的事儿:AnimateDiff这类文生视频模型效果越来越好,但生成的东西大多还是“平面”的,想把它放到网页里,特别是做成有…...

OpenClaw多模型对比:Qwen3-14B与Llama3在本地自动化中的表现

OpenClaw多模型对比:Qwen3-14B与Llama3在本地自动化中的表现 1. 测试背景与实验设计 去年夏天,当我第一次用OpenClaw完成自动整理桌面文件的任务时,就被这种"用自然语言指挥AI操作电脑"的方式震撼了。但随着使用场景越来越复杂&a…...

javaweb高校两校区通勤校车预约系统的设计与实现 论文

目录同行可拿货,招校园代理 ,本人源头供货商功能需求分析用户管理校车班次管理预约功能核销与签到数据统计通知系统技术实现要点前端设计后端逻辑数据库设计安全机制项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招…...

使用vue3+ts构建企业级文件传输管理系统:状态管理、性能优化与用户体验的深度实践

使用vue3+ts构建企业级文件传输管理系统:状态管理、性能优化与用户体验的深度实践 在现代企业应用中,文件传输是核心功能之一。一个高效的传输管理系统不仅需要处理大量文件,还需提供直观的状态反馈、灵活的操作选项和流畅的用户体验。今天,我将分享一个基于Vue 3和TypeSc…...

游戏盾导致 Unity/UE 引擎崩溃的主要原因排查?

做游戏上线的都知道,游戏盾是必装的——毕竟要防外挂、防攻击,不然刚上线就被搞崩,损失太大。但最近帮几个同行排查问题,发现好多项目接入游戏盾后,Unity和UE引擎动不动就崩,要么内存飙到爆,安卓…...

游戏盾导致 Unity/UE 引擎崩溃?内存占用、SO 库冲突深度排查

接入游戏盾后碰到 Unity、UE 编辑器或打包后崩溃、内存暴涨、SO 库冲突的问题,应该都不陌生。我最近在几个项目里反复踩过这些坑,从日志分析、内存追踪到 SO 符号冲突,一步步定位下来,把完整排查流程和解决方案整理出来&#xff0…...

Python数据分析项目实战(046)——数据清洗与预处理概述

版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 数据清洗与预处理是数据分析的基础环节。本阶段工作旨在修复数据质量问题、规范数据格式、优化数据结构,为后续分析建模提供可靠数据。 缺失值处理 缺失值指数据集中存在的空值或未记录的信息…...

目标检测,图像分类。faster,yolo

目标检测,图像分类。faster,yolo...

DAB-DETR目标检测环境配置、DAB-DETR目标检测代跑训练、DAB-DETR目标检测改进创新DAB-DETR目标检测配置:Windows、Ubuntu、Centos、Macos等系统环境

DAB-DETR目标检测环境配置、 DAB-DETR目标检测代跑训练、 DAB-DETR目标检测改进创新 DAB-DETR目标检测配置:Windows、Ubuntu、Centos、Macos等系统环境,如果电脑拥有显卡,可配置GPU版本环境。 DAB-DETR目标检测代跑训练、:可支持训…...

Comsol光子晶体光纤模式分析之FSM Mode计算

Comsol光子晶体光纤模式分析,fsm mode计算在光学领域,光子晶体光纤以其独特的光学特性吸引着众多研究者的目光。而在对光子晶体光纤进行深入研究时,模式分析是至关重要的一环,其中FSM(Full Vectorial Finite Element M…...

8086 汇编报错全总结与归纳

一、可能遇到的所有错误汇总错误代码错误含义触发行(你的代码)核心根源A2048Must be index or base registermov [ax],1H、add [dx],[ax]8086 硬件不支持用非BX通用寄存器做内存间接寻址A2035Operand must have sizemov [bx],1H汇编器无法判断操作数是 8…...

Speechless:为你的微博记忆穿上PDF保护衣

Speechless:为你的微博记忆穿上PDF保护衣 【免费下载链接】Speechless 把新浪微博的内容,导出成 PDF 文件进行备份的 Chrome Extension。 项目地址: https://gitcode.com/gh_mirrors/sp/Speechless 在数字记忆碎片化的时代,你是否曾担…...

ChilloutMix NiPrunedFp32Fix 模型完整教程:从零开始掌握AI图像生成

ChilloutMix NiPrunedFp32Fix 模型完整教程:从零开始掌握AI图像生成 【免费下载链接】chilloutmix_NiPrunedFp32Fix 项目地址: https://ai.gitcode.com/hf_mirrors/emilianJR/chilloutmix_NiPrunedFp32Fix ChilloutMix NiPrunedFp32Fix 是一款基于稳定扩散技…...

2026届学术党必备的六大AI学术神器推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于自然语言处理以及深度学习算法的AI论文查重技术,经过对文本的语义结构、句式…...

2025届毕业生推荐的五大AI辅助写作平台横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 把人工智能生成内容的检测概率给降低,得从文本特征方面着手去进行系统性的优化。…...

破茧成蝶:Java后端从0到资深工程师的进阶之路(五)

破茧成蝶:Java后端从0到资深工程师的进阶之路(五)并发篇——多线程与高并发实战现代后端系统,高并发是绕不开的挑战。多线程编程就像一把双刃剑:用得好了,系统吞吐量飙升;用得不好,死…...

带你读顶会论文丨基于溯源图的APT攻击检测

带你读顶会论文丨基于溯源图的APT攻击检测 **摘要:**本次分享主要是作者对APT攻击部分顶会论文阅读的阶段性总结,将从四个方面开展。 本文分享自华为云社区《[论文阅读] (10)基于溯源图的APT攻击检测安全顶会总结》,作者:eastmoun…...

Xray-强大的漏洞扫描工具

Xray-强大的漏洞扫描工具 Xray是什么? xray (https://github.com/chaitin/xray) 是从长亭洞鉴核心引擎中提取出的社区版漏洞扫描神器,支持主动、被动多种扫描方式,自备盲打平台、可以灵活定义 POC,功能丰富,调用简单&a…...

2026年,探秘义乌一次性包装盒定做厂家的独特工艺与优质服务!

在商品包装需求日益多样化的今天,一次性包装盒的定制市场愈发繁荣。义乌,作为全球知名的小商品之都,拥有众多一次性包装盒定做厂家,它们以独特的工艺和优质的服务在市场中占据一席之地。今天,我们将走进一家具有代表性…...

CMMI 能力成熟度模型集成介绍

CMMI(Capability Maturity Model Integration)即能力成熟度模型集成,是由美国卡内基梅隆大学软件工程研究所(SEI)研发、现由ISACA旗下CMMI 研究院维护的国际权威过程改进与评估框架,核心是通过标准化最佳实…...

水厂供水泵房自控案例(工程实际在用) PLC程序+触摸屏程序+组态软件程序+图纸

水厂供水泵房自控案例(工程实际在用) PLC程序触摸屏程序组态软件程序图纸;凌晨三点,水厂中控室的警报突然炸响。我盯着屏幕上跳动的压力曲线,右手已经摸到了对讲机——这种情况在供水泵房太常见了。今天要聊的自控系统,可是我们项…...

2026年深圳冷冻食品包装盒代理,其中商机你知道多少?

在深圳这个充满活力与机遇的城市,冷冻食品市场一直呈现出稳步增长的态势。随着消费者对冷冻食品需求的不断增加,冷冻食品包装盒的市场需求也随之水涨船高。2026 年,深圳冷冻食品包装盒代理蕴含着巨大的商机。下面就为你详细剖析其中的商机以及…...

基于YOLOv10深度学习的植物叶片病害识别检测系统(YOLOv10+YOLO数据集+UI界面+Python项目+模型)

一、项目介绍 本项目基于先进的YOLOv10目标检测算法,开发了一套智能植物叶片病害识别检测系统。系统能够实现对38种不同植物叶片健康状况的实时检测与分类,包括多种常见病害及健康叶片。通过图形用户界面,用户可以方便地上传图片、视频或调用…...

基于MATLAB平台PCA的人脸识别:开启识别新征程

基于MATLAB平台PCA的人脸识别,程序已调通,可将自己的数据替换进行识别。 得到识别准确率结果。最近在研究人脸识别技术,基于MATLAB平台利用PCA(主成分分析)实现了一个人脸识别程序,现在跟大家分享分享。 PC…...

10:2026 AI变现实战总览:内容、工具、信息差三种变现闭环

作者: HOS(安全风信子) 日期: 2026-04-01 主要来源平台: GitHub 摘要: 提前剧透12大模块如何串联成3条可复制的赚钱路径。本文构建内容变现2.0闭环全图(Agentic生成)、工具/SaaS变现闭环全图(Ag…...