Python中的异常——概述和基本语法

Python中的异常——概述和基本语法

摘要:Python中的异常是指在程序运行时发生的错误情况,包括但不限于除数为0、访问未定义变量、数据类型错误等。异常处理机制是Python提供的一种解决这些错误的方法,我们可以使用try/except语句来捕获异常并进行相应的处理。本部分将对Python中的异常及其基本语法进行详细介绍。

1.简介

1.1什么是异常

当检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常"。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ji6odY6h-1681457268605)(image-20230414145350826.png)]

1.2异常演示

例如:以r方式打开一个不存在的文件。

f = open('xiaogao.txt', 'r')

执行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uppFjQTY-1681457268613)(image-20230414145621235.png)]

1.3python异常

Python中的异常是指在程序运行时出现的错误,这些错误可能导致程序崩溃或产生不可预期的结果。Python提供了一种机制来处理这些错误,即异常处理机制。

1.4常见的Python异常类型

Python中有很多不同类型的异常,每种异常都代表着不同的错误情况。以下是几个常见的Python异常:

  1. ZeroDivisionError:除数为0。
  2. NameError:尝试访问未定义的变量。
  3. TypeError:数据类型错误。
  4. IndexError:列表、元组等序列中的下标超出范围。
  5. KeyError:尝试访问字典中不存在的键。
  6. IOError:输入/输出错误。
  7. ValueError:传递给函数的参数类型正确但值无效。
  8. ImportError:无法导入模块或包。

2.异常的捕获方法

2.1捕获常规异常

基本语法:

try:
    可能发生错误的代码
except:
    如果出现异常执行的代码

案例:
需求:尝试以r模式打开文件,如果文件不存在,则以w方式打开。

try:
    f = open('linux.txt', 'r')
except:
    f = open('linux.txt', 'w')

2.2捕获指定异常

基本语法:

try:
    print(name)
except NameError:
    print('name变量名称未定义错误')

注意:

① 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
② 一般try下方只放一行尝试执行的代码。

2.3捕获多个异常

当捕获多个异常时,可以把要捕获的异常类型的名字,放到except 后,并使用元组的方式进行书写。

try:
    print(1/0)
except (NameError, ZeroDivisionError):
    print('ZeroDivision错误...')

执行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bLigIty1-1681457268618)(image-20230414150130680.png)]

2.4捕获异常并输出描述信息

基本语法:

try:
    print(num)
except (NameError, ZeroDivisionError) as e:
    print(e)

执行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gx699UqN-1681457268619)(image-20230414150411424.png)]

2.5捕获所有异常

基本语法:

try:
    print(name)
except Exception as e:
    print(e)
    

执行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K5x5EbnU-1681457268622)(image-20230414150521913.png)]

2.6异常else

else表示的是如果没有异常要执行的代码。

基本语法:

try:
    print(1)
except Exception as e:
    print(e)
else:
    print('我是没有异常的时候执行的else代码')

执行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cXK5U38u-1681457268624)(image-20230414150628637.png)]

2.7异常的finally

finally表示的是无论是否异常都要执行的代码,例如关闭文件。

try:
    f = open('test.txt', 'r')
except Exception as e:
    f = open('test.txt', 'w')
else:
    print('没有异常')
finally:
    f.close()

在编写Python程序时,需要考虑到可能出现的各种异常情况,并编写相应的异常处理代码。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI已经解锁自动化能力 | 颠覆商业模式和劳动力市场

AI已经解锁自动化能力,将颠覆商业模式和劳动力市场。目前AutoGPT的开源项目: BabyAGI、Auto-GPT、AgentGPT、TeenagerAGI、Jarvis。 AutoGPT原理: 3个GPT4协同合作,一个GPT4负责分解目标创建任务,另一个GPT4负责分配…

C# switch case语句入门and业务必知点

具体的语法形式如下。 switch(表达式) { case 值 1: 语句块 1; break; case 值 2: 语句块 2; break; ... default: 语句块 n; break; } 在这里,switch 语句中表达式的结果必须是整型、字符串…

Linux用户的分类与家目录,ls、pwd、cd、mkdir、touch、rmdir、rm指令与选项等

Linux中用户的分类与用户的家目录 在Linux当中,用户的分类只分为两类,一类叫做超级用户root,还有就是其他也就是传说中的普通用户。我们刚刚登进去时,默认所处的目录是***/root或者/home/用户名***,比如说/root, /hom…

Unity InputSystem (一)

什么是InputSystem InputSystem 是 2019 年 Unity 新推出的插件,输入系统包实现了一个系统来使用任何类型的输入设备来控制你的 Unity 内容。它旨在成为 Unity 的经典输入管理器更强大、更灵活、更可配置的替代品。 新输入系统基于事件,输入设备和动作逻…

信安大佬真的用kali吗?

Kali只是现在网络安全和kali比较火的一个操作系统 下面我为大家讲讲kali系统都有那些优点 Kali介绍Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。面向专业的渗透测试和安全审计。 集成化:预装超过300个渗透测试工具兼容好&#x…

【JavaEE】File、InputStream和OutputStream的使用

1.File 在计算机中目录结构如下: 而File就表示一个目录或者一个普通文件。 File表示目录: File表示普通文件: 我们先来看File的构造方法: 构造器描述File(File parent, String child)根据父目录 孩子文件路径,创…

ROS学习第九节——服务通信

1.基本介绍 服务通信较之于话题通信更简单些,理论模型如下图所示,该模型中涉及到三个角色: ROS master(管理者)Server(服务端)Client(客户端) ROS Master 负责保管 Server 和 Client 注册的信息,并匹配话题相同的 Server 与 Client &#…

如何在不丢失数据的情况下重装Windows 10?

为什么需要重新安装Windows 10? 随着时间的推移,Windows可能会变慢。这可能是由多种原因引起的,例如您安装了许多额外的启动程序,这些程序会延长启动过程等。如果您的Windows系统速度变慢并且无论您卸载多少程序都没有加速&…

Pixhawk基础—认识Pixhawk

Pixhawk简介 pixhawk是由3DR联合APM小组与PX4小组于2014年推出的飞控PX4的升级版,它同时拥有PX4和APM两套固件和相应的地面站软件。该飞控是目前全世界飞控产品中硬件规格最高的产品。 Pixhawk基础 端口介绍 1、Spektrum DSM receiver(Spektrum DSM信号转换为PWM…

PXE+Kickstart自动化安装操作系统

文章目录 PXEKickstart 完美自动化部署系统理论知识:1、PXE2、DHCP 实践实验:1、DHCP服务器配置2、TFTP服务器配置3、HTTP服务器安装4、PXE配置5、Kickstart实践配置 PXEKickstart 完美自动化部署系统 理论知识: 无人值守原理:K…

思科实验 EIGRP

1.1.1 实验目的 通过对 CCNA 课程中的 EIGRP 实验部分进行回顾,从而更加准确掌握 EIGRP 路由协议的 配置方法,以及对 network 命令的正确理解。并且学会对 EIGRP 路由协议查看排错的相关命 令。 1.1.2 实验拓扑 拓扑说明:本实验由两台思科路…

第七章 法律行为与法律意识

目录 第一节 法律行为 一、 法律行为的含义与特征二、 法律行为的结构 (一)法律行为的内在方面 动机目的认知能力 (二)法律行为的外在方面 行动(行为)手段结果 三、法律行为的分类 第二节 法律意识 一、法…

Qt Quick - PageIndicator

Q 理论使用总结 一、概述二、简单使用例子1. SwipeView 和 PageIndicator2. StackLayout 和 PageIndicator 三、常用属性四、定制化 一、概述 PageIndicator用于指示含有多个页面的容器中,当前处理活动的页。记住,这个只是指示当前的活动页,…

4个Python库来美化你的Matplotlib图表

Matplotlib是一个被广泛使用的Python数据可视化库,相信很多人都使用过。 但是有时候总会觉得,Matplotlib做出来的图表不是很好看、不美观。 今天就给大家分享四个美化Matplotlib图表的Python库,它们可以轻松让你的Matplotlib图表变得好看&…

【进阶C语言】有关动态内存管理的经典笔试题(详细图文讲解)

前言 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于C语言进阶系列,本专栏主要内容为数据的存储、指针的进阶、字符串和内存函数…

ActiveMQ使用

一、什么是消息中间件 消息中间件顾名思义实现的就是在两个系统或两个客户端之间进行消息传送 二、什么是ActiveMQ ActiveMQ是一种开源的基于JMS(Java Message Servie)规范的一种消息中间件的实现,ActiveMQ的设计目标是提供标准的&#xff0c…

4.23、TCP状态转换(为什么四次挥手)

4.23、TCP状态转换 1.TCP状态转换图2.为什么需要四次挥手,状态转换 1.TCP状态转换图 2.为什么需要四次挥手,状态转换 2MSL(Maximum Segment Lifetime) 主动断开连接的一方, 最后进入一个 TIME_WAIT状态, 这个状态会持续: 2msl ms…

ABAP:自定义搜索帮助:可参考标准函数F4IF_SHLP_EXIT_EXAMPLE

当我们在自定义选择屏幕中, 需要写入我们自定义的搜索帮助的时候,可以通过预定义函数来实现: 实例说明: 第一步:创建搜索帮助SE11分销渠道(Z_VTWEG) 1.选择基本索引帮助: 2.选择参考表,因为这…

今天面了个腾讯拿 38K 出来的,让我见识到了基础的天花板

今天上班开早会就是新人见面仪式,听说来了个很厉害的大佬,年纪还不大,是上家公司离职过来的,薪资已经达到中高等水平,很多人都好奇不已,能拿到这个薪资应该人不简单,果然,自我介绍的…

【数据结构】堆的应用(堆排序的实现 + (向上/向下)建堆时间复杂度证明 + TopK问题(笔记总结))

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:数据结构 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&…