Python异常捕获和处理方式
目录
一、引言
二、异常捕获和处理的基本方式
1、try-except语句块
2、raise语句
3、assert语句
三、高级异常捕获和处理技术
1、多个except块
2、finally块
3、使用多个try-except块
4、使用with语句
5、使用多个except块捕获同一种异常
四、总结
一、引言
在Python中,异常是指程序运行过程中发生的意外情况,例如除数为零、文件未找到等。这些异常可能会导致程序崩溃或者产生不可预知的结果。为了提高程序的健壮性和可维护性,我们需要对异常进行处理,确保程序在遇到异常时能够正确地响应并恢复执行。

二、异常捕获和处理的基本方式
1、try-except语句块
try-except语句块是Python中处理异常的主要方式。当程序运行到try块时,会尝试执行其中的代码,如果发生异常,则会立即跳转到except块进行处理。在except块中,我们可以根据不同的异常类型编写不同的处理代码。例如:
try: # 尝试执行可能引发异常的代码 result = 1 / 0
except ZeroDivisionError: # 处理除数为零的异常 print("除数不能为零!")
2、raise语句
raise语句用于手动抛出异常。当我们需要在特定情况下触发异常时,可以使用raise语句来抛出异常。例如:
def divide(a, b): if b == 0: raise ZeroDivisionError("除数不能为零!") return a / b
3、assert语句
assert语句用于在代码中添加断言,检查代码中的条件是否满足。如果条件不满足,则会抛出AssertionError异常。例如:
def square(n): assert n > 0, "n必须大于零" return n ** 2
三、高级异常捕获和处理技术
1、多个except块
我们可以使用多个except块来捕获不同类型的异常,并在不同的块中执行不同的处理代码。例如:
try: # 尝试执行可能引发异常的代码 result = int("not a number")
except ValueError: # 处理数值转换异常 print("无效的数值")
except TypeError: # 处理类型错误异常 print("类型错误")
2、finally块
finally块是try-except语句块的可选部分。无论try块中是否发生异常,finally块中的代码都会被执行。通常用于资源的清理和释放。例如:
try: # 尝试执行可能引发异常的代码 result = int("not a number")
except ValueError: # 处理数值转换异常 print("无效的数值")
finally: # 清理资源 print("完成清理")
3、使用多个try-except块
当需要捕获和处理多个异常时,可以使用多个try-except块。每个try块尝试执行一段代码,如果发生异常,则跳转到相应的except块进行处理。例如:
try: # 尝试执行可能引发异常的代码1 result = int("not a number")
except ValueError: # 处理数值转换异常 print("无效的数值1") try: # 尝试执行可能引发异常的代码2 result = 1 / 0
except ZeroDivisionError: # 处理除数为零的异常 print("除数不能为零2")
4、使用with语句
with语句是一种上下文管理器,可以用于自动管理资源,并在退出上下文时自动清理资源。在with语句中,可以捕获和处理异常。例如:
with open("file.txt", "r") as f: try: # 尝试执行可能引发异常的代码 content = f.read() except FileNotFoundError: # 处理文件未找到的异常 print("文件未找到")
在这个例子中,如果文件不存在,会抛出FileNotFoundError异常,并在with语句的except块中捕获和处理该异常。
5、使用多个except块捕获同一种异常
可以使用多个except块来捕获同一种异常,并在不同的块中执行不同的处理代码。例如:
try: # 尝试执行可能引发异常的代码 result = int("not a number")
except ValueError as e: if "invalid literal" in str(e): # 处理特定类型的数值转换异常 print("无效的字面量") else: # 处理其他类型的数值转换异常 print("其他类型的数值转换异常")
在这个例子中,如果发生ValueError异常,会根据异常的具体内容执行不同的处理代码。
四、总结
通过以上的介绍,我们可以看到Python提供了丰富的异常捕获和处理方式。在实际开发中,我们应该根据具体的需求和场景选择合适的方式来进行异常处理。同时,随着Python的不断发展和进步,未来可能会有更多的异常处理技术出现,为我们提供更多的选择和便利。
相关文章:
Python异常捕获和处理方式
目录 一、引言 二、异常捕获和处理的基本方式 1、try-except语句块 2、raise语句 3、assert语句 三、高级异常捕获和处理技术 1、多个except块 2、finally块 3、使用多个try-except块 4、使用with语句 5、使用多个except块捕获同一种异常 四、总结 一、引言 在Pyt…...
PDF文件如何设置限制打印?
想要限制PDF文件的打印功能,想要限制PDF文件打印清晰度,都可以通过设置限制编辑来达到目的。 打开PDF编辑器,找到设置限制编辑的界面,切换到加密状态,然后我们就看到 有印刷许可。勾选【权限密码】输入一个PDF密码&am…...
互操作性(Interoperability)如何影响着机器学习的发展?
互操作性(Interoperability),也称为互用性,即两个系统之间有效沟通的能力,是机器学习未来发展中的关键因素。对于银行业、医疗和其他生活服务行业,我们期望那些用于信息交换的平台可以在我们需要时无缝沟通…...
从零实现一套低代码(保姆级教程) --- 【3】实现Button组件和画布区的拖拽
摘要 目前是每天更新一篇, 因为我不止要写文章,这些代码也是我正在敲的。可能速度没有那么快,但是这个频率感觉还是可以的。 本篇是这个系列的第三篇,如果你是第一次看到这个文章,那你应该会对低代码有那么一丢丢兴趣…...
仓储1、10、11代电子标签接口文档
标签注册 仓储1代注册 侧面按钮连按三次, 注册成功:红灯变绿灯 仓储10代注册 右下角左下角组合按键触发注册 注册成功:右上角绿灯变红灯 仓储11代注册 磁体靠近条码附近,触发标签注册到系统 注册成功:闪红灯边绿…...
iOS将framework转为xcframework
拆分framework 先把framework拷贝到两个文件夹下边,这里只需要armv7、arm64、x86_64。 mkdir iphoneos iphonesimulator cp -R mysdk.framework iphoneos cp -R mysdk.framework iphonesimulator 把iphoneos中的模拟器指令集删除,只保留armv7和arm64 …...
2018年第七届数学建模国际赛小美赛C题共享单车对城市交通的影响解题全过程文档及程序
2018年第七届数学建模国际赛小美赛 C题 共享单车对城市交通的影响 原题再现: 共享自行车改变了许多城市的交通状况,许多大城市引入共享自行车来解决交通问题。我们需要定量评估共享自行车对城市交通的影响,以及相关的经济、社会和环境影响。…...
【数据结构】线段树算法总结(单点修改)
知识概览 用作单点修改的线段树有4个操作: pushup:由子节点的信息计算父节点的信息build:初始化一棵树modify:修改一个区间query:查询一个区间 线段树用一维数组来存储: 编号是x的节点,它的父节…...
数据分析:小红书过节“仪式感”营销种草
导语 过年的氛围是越来越浓,走亲访友,过节送礼都准备起来!据千瓜数据显示,“轻松买到仪式感”热度攀升,作为站内扶持的新兴话题,11月上线以来浏览量超2.5亿,笔记数超过20万篇。 看来ÿ…...
Zookeeper-应用实战
Zookeeper Java客户端实战 ZooKeeper应用的开发主要通过Java客户端API去连接和操作ZooKeeper集群。 ZooKeeper官方的Java客户端API。 第三方的Java客户端API,比如Curator。 ZooKeeper官方的客户端API提供了基本的操作:创建会话、创建节点、读取节点、更新数据、…...
2017年第六届数学建模国际赛小美赛A题飓风与全球变暖解题全过程文档及程序
2017年第六届数学建模国际赛小美赛 A题 飓风与全球变暖 原题再现: 飓风(也包括在西北太平洋被称为“台风”的风暴以及在印度洋和西南太平洋被称为“严重热带气旋”)具有极大的破坏性,往往造成数百人甚至数千人死亡。 许多气…...
Node.js使用Express框架写服务端接口时,如何将接口拆分到不同文件中
项目目录结构说明: node.js连接mysql数据库步骤可参考:Node.js 连接 MySQL | 菜鸟教程 1、拆分之前的写法,未区分模块,所有接口api都写在了入口文件app.js中; 需求:想要将接口api拆分成根据不同的业务模块…...
Unity | Shader基础知识(第八集:案例<漫反射材质球>)
目录 一、本节介绍 1 上集回顾 2 本节介绍 二、什么是漫反射材质球 三、 漫反射进化史 1 三种算法结果的区别 2 具体算法 2.1 兰伯特逐顶点算法 a.本小节使用的unity自带结构体。 b.兰伯特逐顶点算法公式 c.代码实现——兰伯特逐顶点算法 2.2 代码实现——兰伯特逐…...
NCV8460ADR2G在汽车和工业应用中高压侧驱动如何破?
NCV8460ADR2G是一款完全保护的高压侧驱动器,可用于开关各种负载,如灯泡、电磁阀和其他致动器。该器件可以通过有源电流限制和高温关断针对过载情况进行内部保护。 诊断状态输出引脚提供了高温以及开关状态开路负载情况的数字故障指示。 特性:…...
在打日志时,如何使用snowflake-id快速方便得随机获取query的唯一id
步骤一:安装snowflake-id pip install snowflake-id步骤二:代码示例 from snowflake import SnowflakeGeneratorgen SnowflakeGenerator(42)for i in range(100):val next(gen)print(val)参考文档: https://pypi.org/project/snowflake-…...
Linux之yum管理器
目录 yum管理器 yum相关指令 yum list yum list | grep yum install yum remove 拓展 1.yum install -y man-pages 2.切换yum源 3.yum install -y epel-release 4. yum install -y lrzsz rz指令 sz指令 在window系统上,我们会在电脑自带的应用商…...
ubuntu 搭建本地私有pip源
# 搭建本地私有pip源 pip install pip2pi# 创建目录 mkdir /data/work/PyPip/ mkdir /data/work/PyPip/packages cd /data/work/PyPip/# 创建需要从外网源同步的package touch requirements_roop.txt# 批量同步 pip2tgz /data/work/PyPip/packages -r requirements_roop.txt# 同…...
声音克隆:让你的声音变得无所不能
什么是声音克隆? 声音克隆是一种利用人工智能技术,根据一段声音样本,生成与之相似或完全相同的声音的过程。声音克隆可以用于多种场景。 声音克隆的原理是利用深度学习模型,从声音样本中提取声音特征,然后根据目标文…...
hadoop02_HDFS的API操作
HDFS的API操作 1 HDFS 核心类简介 Configuration类:处理HDFS配置的核心类。 FileSystem类:处理HDFS文件相关操作的核心类,包括对文件夹或文件的创建,删除,查看状态,复制,从本地挪动到HDFS文件系统中等。…...
使用C语言将ASCII明文编码为GSM短信体格式
一、背景介绍 GSM(Global System for Mobile Communications)是全球移动通信系统的简称,而GSM 03.38是GSM系统中用于短信编码的标准。GSM 03.38字符集采用7-bit编码,与ASCII的8-bit编码有所不同。为了将ASCII编码的文本转换为GSM…...
基于Circuit Playground Express与MakeCode的阿基米德螺旋桨智能小船制作
1. 项目概述:当古老智慧遇见现代创客阿基米德螺旋,这个诞生于两千多年前的巧妙发明,最初被用来从低处向高处提水。它的核心原理简单而强大:一个旋转的螺旋面,能将流体或颗粒物沿着轴向“推”动。今天,我们不…...
efinance:Python量化交易的免费金融数据终极解决方案
efinance:Python量化交易的免费金融数据终极解决方案 【免费下载链接】efinance efinance 是一个可以快速获取基金、股票、债券、期货数据的 Python 库,回测以及量化交易的好帮手!🚀🚀🚀 项目地址: https…...
PHPExcel批量数据导入终极指南:验证、清洗与入库全流程 [特殊字符]
PHPExcel批量数据导入终极指南:验证、清洗与入库全流程 🚀 【免费下载链接】PHPExcel ARCHIVED 项目地址: https://gitcode.com/gh_mirrors/ph/PHPExcel PHPExcel是一款强大的PHP库,专门用于处理Excel文件的读取、写入和操作。虽然该项…...
3分钟让你的Obsidian代码块告别混乱:专业开发者的笔记美化秘籍
3分钟让你的Obsidian代码块告别混乱:专业开发者的笔记美化秘籍 【免费下载链接】obsidian-better-codeblock Add title, line number to Obsidian code block 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-better-codeblock 还在为Obsidian中密密麻…...
告别浏览器卡顿:如何用Play-with-MPV解锁网页视频专业播放体验
告别浏览器卡顿:如何用Play-with-MPV解锁网页视频专业播放体验 【免费下载链接】play-with-mpv Chrome extension that allows you to play videos in webpages like youtube with MPV instead 项目地址: https://gitcode.com/gh_mirrors/pla/play-with-mpv …...
思源宋体:中文排版设计中的成本效益革命
思源宋体:中文排版设计中的成本效益革命 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是否曾为商业项目中的中文字体授权费用而头疼?或者为寻找既专业又免费…...
C#集成AI对话:开源库ha.openclaw.conversation实战指南
1. 项目概述:一个面向对话式AI的C#开源库最近在折腾一个需要集成智能对话能力的桌面应用,后台服务是用C#写的。大家都知道,现在搞AI对话,主流玩法是调用OpenAI、Claude这些大模型的API,或者用一些开源的本地模型。但真…...
告别本地跑模型:用恒源云+PyCharm专业版搭建你的第一个远程深度学习环境
告别本地跑模型:用恒源云PyCharm专业版搭建你的第一个远程深度学习环境 当你在本地笔记本上跑ResNet-18都卡得无法切换浏览器标签时,就该考虑把计算任务交给云端了。但真正阻碍开发者上云的往往不是技术门槛,而是开发体验的断层——谁都不想为…...
终极指南:如何利用Awesome Public Datasets构建专业级数据科学项目
终极指南:如何利用Awesome Public Datasets构建专业级数据科学项目 【免费下载链接】awesome-public-datasets A topic-centric list of HQ open datasets. 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-public-datasets 在当今数据驱动的时代…...
半导体光刻OPC技术:稀疏模型到网格模型的转换实践
1. 光学邻近效应校正(OPC)技术演进背景在半导体制造的光刻工艺中,光学邻近效应校正(Optical Proximity Correction, OPC)是一项至关重要的分辨率增强技术。随着制程节点不断微缩至65nm以下,传统的光学模型面…...
