【Python从入门到进阶】Python异常处理

news2024/11/29 16:26:56

接上篇《18、文件内容序列化和反序列化操作》
上一篇我们学习了文件读取及写入数据序列化和反序列化的操作。本篇我们来学习Python中有关异常(捕获异常、处理异常等)的知识。

一、异常的定义

在编写代码时,我们无法完全掌控程序运行过程中会出现哪些问题。例如,文件不存在、网络连接中断、用户输入非法数据等错误都可能导致程序崩溃或者产生不可预知的行为。因此,为了提高程序健壮性和可靠性,我们需要使用异常处理机制来处理这些情况。

Python中的异常处理机制指的是当程序执行过程中出现异常时,通过捕获异常并进行适当的处理,使得程序能够正常退出。

二、处理异常方法

Python中可以使用try-except语句来捕获异常。try块中包含可能抛出异常的代码,except块则负责处理try块中抛出的异常。
其基本语法如下:

try:
    # 可能抛出异常的代码块
except [ExceptionType]:
    # 处理异常的代码块

其中,try块包含可能抛出异常的代码,如果try块中的代码执行成功,则跳过except块,继续执行后面的代码;
如果try块中的代码抛出了指定类型的异常,就会退出try块,转而执行except块中的代码。

方括号中的[ExceptionType]是一个可选项,用于指定要捕获的异常类型。如果不指定ExceptionType,则except块将捕获所有类型的异常。如果指定了ExceptionType,则只有当try块中抛出的异常类型与之匹配时才会执行except块中的代码。

除了try和except块之外,Python中的异常处理机制还支持其他的关键字:
else:在try块成功执行后执行一些附加操作;
finally:在try块结束后无论是否触发异常都执行一些清理工作。

完整的 try-except-finally 语法如下:

try:
    # 可能抛出异常的代码块
except [ExceptionType]:
    # 处理异常的代码块
else:
    # 如果没有异常发生,则执行该代码块
finally:
    # 无论异常是否发生,都执行该代码块

三、异常处理实例

下面是一个读取文件时可能出现FileNotFoundError异常的处理实例:

try:
    with open('file.txt', 'r') as f:
        content = f.read()
except FileNotFoundError:
    print('File not found!')

效果:

在上述代码中,我们使用try-except语句来处理打开文件时可能出现的FileNotFoundError异常。try块中的代码尝试打开名为file.txt的文件并读取其中的内容。如果文件不存在,则抛出FileNotFoundError异常。except块中的代码将捕获这个异常并打印出错误信息"File not found!"。

如果我们不指定具体的异常类型,那么try会获取所有的异常,使用as关键字将捕获的异常对象赋值给变量e,然后打印出e的类型,使用type(e).name可以获取捕获的异常对象的类名,从而得到异常类型。我们故意在try中再制造一个除以0的异常,看看最终except会给我们抛出什么错误:

try:
    with open('file.txt', 'r') as f:
        content = f.read()
except Exception as e:
    print('实例1捕获到的异常:', type(e).__name__)

try:
    num1 = 1
    num2 = 0
    num3 = num1/num2
except Exception as e:
    print('实例2捕获到的异常:', type(e).__name__)

效果:

在上述代码中,我们仍然使用try-except语句处理打开文件时可能抛出的任何异常。不过这次我们没有指定异常类型,而是直接打印出所有捕获到的异常。

通过使用try-except语句,我们可以对程序运行过程中可能出现的异常进行处理,避免程序崩溃或者产生不可预知的结果。

至此,我们关于Python的所有基础知识全部学习完毕,下一篇我们进入Python的实战教程,学习爬虫的相关技术。

参考:尚硅谷Python爬虫教程小白零基础速通教学视频

转载请注明出处:https://blog.csdn.net/acmman/article/details/130680697

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

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

相关文章

原神服务端建模修改模型贴图(SpecialK)教程

原神服务端建模修改模型贴图(SpecialK)教程 我是艾西,今天跟大家闲聊一下原神建模修改模型等。在一个游戏里开发者会按照自己这个游戏的大方向去运营,而总是有一些小伙伴有不一样的需求,如果是建模拥有独一无二的角色或者是外观装扮等那么艾…

多系统启动U盘Ventory下载、安装、使用

官网链接 Ventoy Ventoy 简介 简单来说,Ventoy是一个制作可启动U盘的开源工具。 有了Ventoy你就无需反复地格式化U盘,你只需要把 ISO/WIM/IMG/VHD(x)/EFI 等类型的文件直接拷贝到U盘里面就可以启动了,无需其他操作。 你可以一次性拷贝很多个…

OpenCL编程指南-4.4矢量操作符

矢量操作符 如下描述了可用于矢量数据类型或矢量和标量数据类型组合的各类操作符。 算术操作符 算术操作符(加()、减(–)、乘(*)和除(/)),可以作用于内置整数、浮点标量和矢量数…

次郎家书——第一天关于数值计算方法考试后——的一些思考和反思

考试的复盘:传送门:数值计算方法考试复盘 对此次考试的看法: 这次考试考试内容虽然有没复习到的如复合辛普森和复合梯形公式还有最小二乘的推广(这里上课的时候听懂了但是复习的时候嫌麻烦没看原来,结果大题是真的写错了&#…

nuxt 一直报错 http://localhost:24678/_nuxt/

解决: 这个错误可能是由于Nuxt.js应用程序无法正确加载/_nuxt/路径下的资源而导致的。解决这个问题的方法有以下几种: 1.检查nuxt.config.js文件 在nuxt.config.js文件中,检查build.publicPath属性是否设置为正确的公共路径。例如&#xff1a…

UART驱动情景分析-read

一、源码框架回顾 shell读数据,一开始的时候没有就休眠。数据从串口发送到驱动,驱动接收到中断,驱动读取串口数据,这个数据会传给行规程。 行规程获取到数据后,会回显。按下删除就删除一个字符,按下回车&am…

pytorch 测量模型运行时间,GPU时间和CPU时间,model.eval()介绍

文章目录 1. 测量时间的方式2. model.eval(), model.train(), torch.no_grad()方法介绍2.1 model.train()和model.eval()2.2 model.eval()和torch.no_grad() 3. 模型推理时间方式4. 一个完整的测试模型推理时间的代码5. 参考: 1. 测量时间的方式 time.time() time.…

使用qt creator编译zlib

zlib被设计为一个免费的,通用的,法律上不受限制的-即不受任何专利保护的无损数据压缩库,几乎可以在任何计算机硬件和操作系统上使用。 官网:http://www.zlib.net/ 下载zlib源码:http://www.zlib.net/zlib1213.zip 备用地址&#x…

关于使用API接口获取商品数据的那些事

随着电商行业的不断发展,越来越多的企业和个人需要获取各大电商平台上的商品数据。而最常用的方法是使用API接口获取商品数据。本文将为您介绍使用API接口获取商品数据的步骤和注意事项。 一、选择API接口 首先需要了解各大电商平台提供的API接口,目前…

由浅入深理解java集合(一)——集合框架 Collection、Map

Java 提供了一套完整的集合类(也可以叫做容器类)来管理一组长度可变的对象(也就是集合的元素),其中常见的类型包括 List、Set、Queue 和 Map。从我个人的编程经验来看,List 的实现类 ArrayList 和 Map 的实…

华为OD机试 - 查找树中元素(Python)

题目描述 已知树形结构的所有节点信息,现要求根据输入坐标(x,y)找到该节点保存的内容值,其中x表示节点所在的层数,根节点位于第0层,根节点的子节点位于第1层,依次类推;y表示节点在该层内的相对偏移,从左至右,第一个节点偏移0,第二个节点偏移1,依次类推; 举例:…

手把手教你用代码画架构图 | 京东云技术团队

作者:京东物流 覃玉杰 1. 前言 本文将给大家介绍一种简洁明了软件架构可视化模型——C4模型,并手把手教大家如何使用代码绘制出精美的C4架构图。 阅读本文之后,读者画的架构图将会是这样的: 注:该图例仅作绘图示例使…

【入土级】详解C++类对象(中篇)

目录 前言:类的6个默认成员函数 一, 构造函数 1. 概念 2. 特性 二, 析构函数 2.1 概念 2.2 特性 2.3 牛刀小试 三, 拷贝构造函数 3.1概念 3. 2 特点 四, 赋值运算符重载 4. 1 运算符重载 五&#xff0…

网站测试的主要方法

网站测试的主要方法 网站测试是保证网站质量的重要手段,通过对网站进行测试可以及时发现问题并修复,提高用户体验和网站的可靠性。本文将介绍网站测试的主要方法。 1.功能测试:测试网站的所有功能是否正常。通过模拟用户的操作,确…

最新水果FLStudio21中文版下载及快捷键操作教程

任何一款软件,其快捷键永远扮演着至关重要的作用,熟练运用快捷键不仅能够节省时间,提高工作效率,还有助于熟练掌握所使用的软件。作为一款功能强大的音乐编曲软件,FL Studio有着大量的快捷键,这些快捷键在一…

【ArcGIS Pro二次开发】(28):用地图斑导出用地用海汇总表

本工具的作用是将现状用地或规划用地导出Excel格式的用地用海汇总表。 实现这个功能的Arcpy脚本工具我之前已经做过,详见:ArcGisPro脚本工具【8】——用地图斑导出用地用海汇总表 这次试着在ArcGIS Pro SDK中来实现同样的功能。 一、要实现的功能 如上…

【存储数据恢复】H3C存储卷中的数据恢复案例

存储数据恢复环境&故障: H3C FlexStorage某型号存储,25块磁盘组建的RAID5,其中包含一块热备盘。 工作人员误操作将存储设备中原先的2个卷删除,删除之后又使用和删除2个卷同样大小的空间重建了一个卷。用户希望恢复删除的2个卷…

springboot缓存

1. 认识缓存 一级缓存 - 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质 - 使用缓存可以有效的减少低速数据读取过程的次数,提高系统性能 Service public class BookServiceImplCache implements BookService {Autowiredprivate BookDao book…

玩转服务器之环境篇:PHP和Python环境部署指南 | 京东云技术团队

前几篇文章中讲解了如何搭建docker和Java Web环境的方法,本篇文章来教大家搭建一个好的PHP和Python环境,可以帮助开发和运行PHP和Python应用程序,使其更加高效和稳定。 一、 PHP环境介绍 好的开发环境无疑会大大提升编码效率,近…

搭载RK3588的Orange Pi 5 Plus来了!首发“亲民价”649元起!

Orange Pi 5 Plus来了。令人惊艳的Orange Pi 5 家族将又添一个重量级新成员! 作为香橙派首款搭载瑞芯微RK3588的开发板,Orange Pi 5 Plus将成为顶级高性能开发板的臻选。先说几个令人惊艳的亮点:两个PCIe扩展的2.5G以太网接口;eMMC 闪存插座…