python中的异常捕获与传递

news2024/11/25 10:44:58

目录

一.了解异常

二.异常的捕获方法

1.捕获常规异常

演示

 2.捕获制定异常

演示

 3.捕获多个异常

演示

 4.捕获所有异常

演示

 5.异常else

演示

6.异常的finally

演示

三.异常的传递


 

一.了解异常

当我们的程序遇到了BUG,那么接下来有两种情况:

  1. 整个程序因为一个BUG停止运行
  2. 对BUG进行提醒,整个程序继续运行

显然在之前的学习中,我们所有的程序遇到BUG就会出现1的这种情况,也就是整个程序直接奔溃.
但是在真实工作中,我们肯定不能因为一个小的BUG就让整个程序全部奔溃,也就是我们希望的是达到2的这种情况那这里我们就需要使用到捕获异常

捕获异常的作用在于:提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续手段。

二.异常的捕获方法

1.捕获常规异常

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

演示

需求:尝试以`r`模式打开文件,如果文件不存在,则以`w`方式打开。
try:
        f = open('linux.txt' , 'r')
except:
        f =open('linux.txt' , 'w')

 2.捕获制定异常

基本语法:
try:
        print(name)
except NameError as e:
        print('name变量名称未定义错误')

注意

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

演示

 

 图二就表明了:如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。

as是可以设置一个别名

 3.捕获多个异常

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

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

演示

 4.捕获所有异常

Exception是顶级异常

演示

 5.异常else

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

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

演示

try:
    print("hello")
except Exception as e:
    print("出现了变量未定义的错误")
    print(e)
else:
    print("没有异常")

 结果是

 注意

else可写可不写

6.异常的finally

finally表示的是无论是否异常都要执行的代码,例如关闭文件。
try:
        f = open('test.txt' , 'r')
except Exception as e:
        f =open('test.txt' , 'w')
else:
        print('没有异常,真开心')
finally:
        f.close()

演示

try:
    f=open("D:/12.txt","r",encoding="UTF-8")
except Exception as e:
    print("出现了变量未定义的错误")
    print(e)
    f=open("D:/12.txt","w",encoding="UTF-8")
else:
    print("没有异常")
finally:
    print("我是finally,无论有没有异常我都要执行")
    f.close()

结果是

三.异常的传递

异常是具有传递性的


当函数func01中发生异常,并且没有捕获处理这个异常的时候,异常会传递到函数func02,当func02也没有捕获处理这个异常的时候main函数会捕获这个异常,这就是异常的传递性.

 提示:
当所有函数都没有捕获异常的时候,程序就会报错

 

 

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

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

相关文章

leetcode.1971 寻找图中是否存在路径 - bfs dfs 并查集 邻接表 邻接矩阵

1971. 寻找图中是否存在路径 目录 1、bfs - 邻接矩阵 2、dfs - 邻接表 3、并查集 1、bfs - 邻接矩阵 让源点source入队 取队头遍历未标记的邻接节点并入队如果队伍里有dest目标节点 说明dest被遍历到 则return trueclass Solution { public:static const int N2*1e5;bool st[…

靴子落地:ChatGPT 国内发展或被「拉手刹」

内容一览:深度合成服务在满足用户需求、改进用户体验的同时,也被一些不法人员用于制作、复制、发布、传播违法信息,诋毁、贬损他人名誉、荣誉,仿冒他人身份实施诈骗等违法行为,如今针对这一技术的管理规定终于发布了。…

游戏开发 mask和RectMask2D区别

1. Mask遮罩的大小与形状依赖于Graphic,而RectMask2D只需要依赖RectTransform 2. Mask支持圆形或其他形状遮罩, 而RectMask2D只支持矩形 3. Mask会增加drawcall 4、mask的性质: 性质1:Mask会在首尾(首Mask节点&…

Jenkins(4)— 配置钉钉通知

1、创建钉钉机器人 自定义机器人接入 - 钉钉开放平台 群设置 >> 智能群助手 >> 添加机器人 >> 自定义webhook机器人 输入自定义钉钉机器人名字和选择必要的安全设置。 注意:复制上面的加密信息和Webhook,后面在jenkins配置钉钉机器…

[附源码]计算机毕业设计Python的家政服务平台(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

解决jeecgboot框架下单点登录后,页面刷新后,会自动跳转到单点登录服务的登录页问题

1.配置单点服务,可参考官方文档:http://doc.jeecg.com/2044170 - 打开.env文件,UE_APP_SSOtrue即代表开启SSO登录 NODE_ENVproduction VUE_APP_PLATFORM_NAMEJeecg-Boot 企业级快速开发平台 VUE_APP_SSOtrue- 打开.env.development文件,修改…

黑*头条_第7章_app端文章搜索(新版)

黑*头条_第7章_app端文章搜索(新版) 文章目录黑*头条_第7章_app端文章搜索(新版)1) 今日内容介绍1.1)App端搜索-效果图1.2)今日内容2) 搭建ElasticSearch环境2.1) 拉取镜像2.2) 创建容器2.3) 配置中文分词器 ik2.4) 使用postman测试3) app端文章搜索3.1) 需求分析3.2) 思路分析…

m基于CNN卷积神经网络的IBDFE单载波频域均衡算法

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 单载波频域均衡(SC-FDE)是解决符号间干扰(ISI)问题的一项重要技术。相比于单载波时域均衡(SC-TDE)技术和正交频分复用(OFDM)技术,SC-FDE技术具有复杂度低、峰均功率比小的优点。但是,SC-FDE技术中…

Android 测试文字编码格式

测试文字编码格式,与设置字符串格式 调用: juniversalchardet-1.0.3.jar app里的Build.gradle implementation files(libs\\juniversalchardet-1.0.3.jar) java调用: import org.mozilla.universalchardet.UniversalDetector;/*** 测试编…

面试:分库分表经典15连问

目录 1. 我们为什么需要分库分表 1.1 为什么要分库 1.2 为什么要分表 2. 什么时候考虑分库分表? 3. 如何选择分表键 4.非分表键如何查询 5. 分表策略如何选择 5.1 range范围 5.2 hash取模 5.3 一致性Hash 6. 如何避免热点问题数据倾斜(热点数…

LaTex教程(二)——LaTeX排版

文章目录1. 中文宏包2. 字符2.1 空格和分段2.2 标点符号2.2.1 引号2.2.2 连字号和破折号2.2.3 省略号3. 文字强调4. 断行断页1. 中文宏包 ctex 宏包和文档类是对CJK 和xeCJK 等宏包的进一步封装。ctex 文档类包括 ctexart /ctexrep / ctexbook,是对LATEX 的三个标准…

第十七届D2大会(II)

一、无极:面向复杂B端项目的低代码平台设计与实践 页面片:自定义的最小低代码开发单元,包括:数据、布局、业务逻辑等低代码编辑器可配合配置分支管理、DevTool等能力,提供更好的工程体验 二、基于H5页面“高差指纹”技…

湿气是怎么来的?身体湿气重什么症状

相信大家在生活中都听说过湿气这个词,尤其是老一辈的人经常会在夏季说晚上湿气重之类的话。其实,从中医的角度来看,湿气更多的是指内脏器官功能失调引起的内生湿邪,主要与脾脏有关。 中医认为,脾胃具有运输水分和湿度的…

Python:python镜像源管理

文章目录常用镜像源配置镜像源(1)pycharm内部配置(2)手动添加镜像源,临时使用(3) 永久配置镜像源,设置默认anaconda小结常用镜像源 清华:https://pypi.tuna.tsinghua.edu.cn/simple…

JAVA中Volatile/Synchronized

线程安全问题的发生: java的线程内存模型中定义了每个线程都有一份自己的共享变量副本(本地内存),里面存放自己私有的数据,其他线程不能直接访问,而一些共享变量则存在主内存中,供所有线程访问…

DBCO-Sulfo-NHS二苯基环辛炔-磺基活性酯1400191-52-7水溶性试剂

DBCO-Sulfo-NHS Ester二苯基环辛炔-磺基活性酯1400191-52-7 名称:二苯基环辛炔-磺基-琥珀酰亚胺酯 英文名称:DBCO-Sulfo-NHS Ester 结构式: CAS:1400191-52-7 外观:固体/粉末 分子式:C25H21N2NaO8S 分子量&#x…

【图像压缩】JEPG图像压缩【含Matlab源码 1167期】

⛄一、DCT图像无损压缩简介 1 图像压缩 图像压缩按照压缩过程中是否有信息的损失以及解压后与原始图像是否有误差可以分为无损压缩和有损压缩两大类。无损压缩是指不损失图像质量的压缩,它是对文件的存储方式进行优化,采用某种算法表示重复的数据信息&a…

免费l2接口有什么特点?

作为增值行情,免费l2接口行情特点如下: 1、更丰富的信息 更多的盘口订单数据、逐笔成交数据、成交与订单关联数据及增值数据,揭示交易细节,全方位反映市场状态。 2、更丰富的委托盘口 提供买卖方10个价位的价格、股数和委托笔…

DCN神州数码——设备基本指令 (超详细)

神州数码——设备基本操作 Telnet telnet-server enable username DCN privilege 15 password DCN authentication securityip ip authorization line vty command <1-15> {local | radius | tacacs} SSH ssh-server enable username DCN privilege 15 password DCN …

2022沙丘大会 · 信创专场 GBASE告诉您金融行业数据库如何选型

12月10日&#xff0c;2022沙丘大会信创专场如期召开&#xff0c;本期专场由沙丘社区与中国信通院数据库应用创新实验室联合主办&#xff0c;GBASE南大通用技术总监冯文忠受邀出席并分享《国产数据库金融行业应用情况》主题演讲。 数据库作为金融信息系统的关键环节&#xff0…