Python基础学习之try

在Python编程中,异常处理是一种非常重要的编程技巧,它允许程序在运行时遇到错误或异常情况时能够优雅地处理,而不是直接崩溃。Python提供了try-except-finally结构来实现异常处理,使得程序能够在遇到错误时采取适当的措施,并继续执行后续的代码。

一、try块:尝试执行的代码

try块中包含了可能引发异常的代码。当Python解释器执行到try块时,它会尝试执行其中的代码。如果代码执行成功,那么程序将继续执行后续的代码;如果代码执行过程中出现了异常,那么解释器会立即跳出try块,并查找与之匹配的except块来处理异常。

示例代码:

try:  # 尝试执行的代码  x = 1 / 0  # 这将引发一个ZeroDivisionError异常  
except:  # 异常处理代码  print("发生了异常")

在上面的示例中,尝试执行除法运算 1 / 0,这将引发一个 ZeroDivisionError 异常。由于我们使用了try-except结构,当异常发生时,程序不会崩溃,而是会执行except块中的代码,打印出“发生了异常”。

二、except块:处理异常

except块用于捕获并处理try块中引发的异常。当try块中的代码引发异常时,Python解释器会查找与之匹配的except块,并执行其中的代码来处理异常。except块可以指定要捕获的异常类型,也可以不指定,以捕获所有类型的异常。

示例代码:

try:  # 尝试执行的代码  x = int(input("请输入一个整数:"))  y = 10 / x  
except ValueError:  # 处理ValueError异常  print("输入的不是一个有效的整数")  
except ZeroDivisionError:  # 处理ZeroDivisionError异常  print("除数不能为0")  
except:  # 处理其他类型的异常  print("发生了其他类型的异常")

上面的示例中,我们使用了多个except块来捕获不同类型的异常。如果用户输入的不是一个有效的整数,将引发 ValueError 异常;如果输入的整数为0,将引发 ZeroDivisionError 异常。根据异常的类型,程序会执行相应的except块中的代码来处理异常。

三、finally块:无论是否发生异常都会执行的代码

finally块中的代码无论是否发生异常都会执行。它通常用于执行一些清理操作,如关闭文件、释放资源等。无论try块中的代码是否成功执行,或者except块是否捕获到异常,finally块中的代码都会被执行。

示例代码:

try:  # 尝试打开文件  file = open("example.txt", "r")  # 读取文件内容  content = file.read()  # 执行其他操作...  
except FileNotFoundError:  # 处理文件未找到异常  print("文件未找到")  
finally:  # 关闭文件  file.close()

在上面的示例中,我们尝试打开一个文件并读取其内容。如果文件不存在,将引发 FileNotFoundError 异常。无论是否发生异常,finally块中的代码都会执行,确保文件被正确关闭。

总结:

try-except-finally结构是Python中异常处理的核心机制。通过合理地使用这些结构,我们可以编写出更加健壮和可靠的程序,能够在遇到错误时采取适当的措施,并继续执行后续的代码。掌握try的用法是Python编程中的一项重要技能,希望本文能够帮助你更好地理解和应用它。

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

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

相关文章

【优质书籍推荐】AIGC时代的PyTorch 深度学习与企业级项目实战

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

面:go能不能手写一个简单的协程池?

最简单的想法是使用chan管道和wg也就是sync.WaitGroup这两个搭档来进行实现协程池 那么在chan管道中最简单的就是无缓冲的了 对于协程池有啥操作? 第一个要想到newPool 并且要明白,这个协程池是不是你叫他停他才能停,如果没说&#xff0c…

springcloud按版本发布微服务达到不停机更新的效果

本文基于以下环境完成 spring-boot 2.3.2.RELEASEspring-cloud Hoxton.SR9spring-cloud-alibaba 2.2.6.RELEASEspring-cloud-starter-gateway 2.2.6.RELEASEspring-cloud-starter-loadbalancer 2.2.6.RELEASEnacos 2.0.3 一、思路 实现思路: 前端项目在请求后端接…

C++ 哈希

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:C知识分享⏪   🚚代码仓库:C高阶🚚   🌹关注我🫵带你学习更多C知识   🔝🔝 ​ 前言 1. unordered系列关联式容器 1.1 unor…

必应bing国内广告开户注册教程!

今天搜索引擎广告成为企业推广产品与服务、提升品牌知名度的重要渠道之一。作为全球第二大搜索引擎,必应Bing凭借其高质量的用户群体和广泛的国际覆盖,为广告主提供了独特的市场机遇。在中国,虽然必应的市场份额相对较小,但对于寻…

有n个数,编写程序使其顺序向后移m个位置,使最后的m个数变成前面m个数

#include<stdio.h> intmain() void moveone(int*,int); int number[20],n,m,i; printf("请输人数的个数(<20个):"); scanf("%d",&n); printf("输人%d 个数:",n); for(i0;i<n;i) scanf("%d",numberi); printf(&quo…

磁密固定下的三次谐波与电压谐波的关系

同相位或者相位差为180的情况下&#xff0c;磁通密度三次谐波含量占比 α \alpha α&#xff0c;则电压三次谐波含量占比为 3 α 3\alpha 3α 同相位&#xff0c;磁通密度三次谐波含量占比 α \alpha α情况下&#xff0c; B B 0 sin ⁡ ( ω t ) α B 0 sin ⁡ ( 3 ω t )…

使用 MediaCodec 在 Android 上进行硬解码

要使用 MediaCodec 在 Android 上进行硬解码&#xff0c;并获取 RGBA 数据&#xff0c;你可以按照以下步骤进行操作&#xff1a; 创建 MediaExtractor 对象并设置要解码的 MP4 文件路径&#xff1a; MediaExtractor extractor new MediaExtractor(); extractor.setDataSourc…

数据结构(data structure)(1)链表和线性表

类和对象 对象将数据和操作打包在一起&#xff0c;类描述了这一切 用构造器创建(实例化)对象 类和类之间的关系 -关联&#xff08;组合&#xff0c;聚集&#xff09; -泛化private class Student{protected String name;protected int age;protected int ability;public Studen…

安卓ComponentName简介及使用

目录 一、ComponentName是什么&#xff1f;二、类分析2.1 构造方法2.2 重点方法 三、ComponentName的使用 一、ComponentName是什么&#xff1f; ComponentName&#xff0c;顾名思义&#xff0c;就是组件名称&#xff0c;用于表示Android应用程序组件的名称。在Android开发中&…

航空企业数字化解决方案(207页PPT)

一、资料描述 航空企业数字化解决方案是一项针对航空公司在数字化转型过程中所面临挑战的全面应对策略&#xff0c;旨在通过先进的信息技术提升航空企业的运营效率、客户服务水平以及市场竞争力。这份207页的PPT详细介绍了航空企业数字化的各个方面&#xff0c;包括关键技术的…

Web3技术解析:区块链在去中心化应用中的角色

引言 在过去几年中&#xff0c;Web3技术已经成为了互联网领域的一个热门话题。作为区块链技术的延伸&#xff0c;Web3不仅仅是数字货币的代名词&#xff0c;更是一个能够为各种应用提供去中心化解决方案的强大工具。本文将深入探讨区块链在Web3去中心化应用中的关键角色&#…

ubuntu查看opencveigen

ubuntu查看opencv&eigen&cmake版本的方法 eigen eigen版本号在/usr/include/eigen3/Eigen/src/Core/util/Macros.h文件中&#xff0c;下图代表版本3.3.7 opencv版本 pkg-config --modversion opencv4也可能最后的字符串是opencv2&#xff0c;opencv

R语言 数据框的长、宽格式转换

Converting data between wide and long format 在宽、长格式之间转换数据 R语言中的大多数函数希望数据是长格式 但是&#xff0c;像 SPSS 通常使用宽格式数据 当你想把将数据从宽转换为长格式 常用的有两种方法&#xff1a; 1、gather() 和 spread() 来自 tidyr 包。 2、me…

W801学习笔记十二:掌机进阶V3版本之驱动(PSRAM/SD卡)

本次升级添加了两个模块&#xff0c;现在要把他们驱动起来。 一&#xff1a;PSRAM 使用SDK自带的驱动&#xff0c;我们只需要写一个初始化函数&#xff0c;并在其中添加一些自检代码。 void psram_heap_init(){wm_psram_config(0);//实际使用的psram管脚选择0或者1&#xff…

美团:搜索推荐算法工程师

目录 机器学习、深度学习和强化学习 迁移学习: 强化学习: 可解释性推荐:

中小学生如何开始创办谷歌?

现在财富自由这个词很火&#xff0c;因为每个人都想让自己能够摆脱朝九晚五工作的束缚。而通往财富自由的最佳路径——那就是创办自己的公司。 这不仅仅是关于金钱&#xff0c;更是关于掌控自己的未来&#xff0c;实现个人价值的最大化。 你是否曾梦想过自己的创意能够颠覆整…

Java学习路线及自我规划

荒废了一段时间&#xff0c;这段时间的总结开始了JavaWeb的学习但是困难重重&#xff0c;例如Maven&#xff0c;Vue的路由等&#xff0c;所以我反省了一段时间&#xff0c;因为基础薄弱&#xff0c;加之学习的资源是速成视频&#xff0c;导致大厦将倾的局面&#xff08;也算不上…

RabbitMQ工作模式(5) - 主题模式

概念 主题模式&#xff08;Topic Exchange&#xff09;是 RabbitMQ 中一种灵活且强大的消息传递模式&#xff0c;它允许生产者根据消息的特定属性将消息发送到一个交换机&#xff0c;并且消费者可以根据自己的需求来接收感兴趣的消息。主题交换机根据消息的路由键和绑定队列的路…

RabbitMQ的理论知识点,和使用RabbitMQ时常见的问题点【理论】!

不管使用任何语言调用RabbitMQ 一般都会存在各种问题&#xff0c;我整理了一下 我觉得会遇到的常见问题&#xff0c;并记录了 解决思路 。没有提供具体代码&#xff0c;后续有时间写个代码体会一下&#xff0c;实际有了解决思路&#xff0c;百度里有很多代码让我们使用。哈哈 …