【Python】异常处理 ④ ( 异常处理 else 语句 | 异常处理 finally 语句 )

news2024/12/28 18:10:48

文章目录

  • 一、Python 异常捕获 else 语句
    • 1、异常捕获 else 语句
    • 2、代码示例 - 没有触发 else 语句的情况
    • 3、代码示例 - 触发 else 语句的情况
  • 二、Python 异常捕获 finally 语句
    • 1、异常捕获 finally 语句
    • 2、代码示例 - 出现异常后执行 finally 语句





一、Python 异常捕获 else 语句




1、异常捕获 else 语句


在 Python 中 , try-except 语句块中可以使用 else 语句 ;

else 语句在 try 块中的所有异常都被捕获之前不会执行 ;

如果出现异常 , 就会执行 except 语句内容 ;

如果没有出现异常 , 或者 没有捕获到指定的异常 , 才会执行 else 语句内容 ;


2、代码示例 - 没有触发 else 语句的情况


在下面的代码中 , 在 try 代码块中 , 出现了异常 , 执行的是 except 代码块 , else 代码块没有触发 ;


代码实例 :

"""
异常处理操作 代码示例
"""

try:
    # 可能会引发异常的代码
    result = 10 / 0
    # result = 10 / 0
except Exception as e:
    # 处理异常
    print("发生了异常:", e)
else:
    # 在没有异常的情况下执行的代码
    print("程序执行成功")

执行结果 :

/Users/zyq/PycharmProjects/Hello/venv/bin/python /Users/zyq/PycharmProjects/Hello/main.py 
发生了异常: division by zero

Process finished with exit code 0

在这里插入图片描述


3、代码示例 - 触发 else 语句的情况


在下面的代码中 , 在 try 代码块中 , 没有出现了异常 , except 代码块没有执行 , else 代码块触发执行 ;


代码实例 :

"""
异常处理操作 代码示例
"""

try:
    # 可能会引发异常的代码
    result = 10 / 1
except Exception as e:
    # 处理异常
    print("发生了异常:", e)
else:
    # 在没有异常的情况下执行的代码
    print("程序执行成功")

执行结果 :

/Users/zyq/PycharmProjects/Hello/venv/bin/python /Users/zyq/PycharmProjects/Hello/main.py 
程序执行成功

Process finished with exit code 0

在这里插入图片描述





二、Python 异常捕获 finally 语句




1、异常捕获 finally 语句


在Python中 , try-except 语句块中可以使用 finally 语句 , 无论异常是否被捕获 , finally 语句都会执行 ;

这使得 finally 语句块中的代码总是在 try 或 except 语句块中的代码之后执行 , 无论是否有异常被捕获 ;

不管是否出现异常 , 都会执行 finally 语句 ;

不管异常是否被捕获 , 都会执行 finally 语句 ;


2、代码示例 - 出现异常后执行 finally 语句


下面的代码中 , 出现了异常 , 该异常被捕获 , finally 最终执行 ;

执行结果 :

"""
异常处理操作 代码示例
"""

try:
    # 可能会引发异常的代码
    result = 10 / 0
except Exception as e:
    # 处理异常
    print("发生了异常:", e)
else:
    # 在没有异常的情况下执行的代码
    print("程序执行成功")
finally:
    # 无论是否有异常都会执行的代码
    print("程序执行完毕")

执行结果 :

/Users/zyq/PycharmProjects/Hello/venv/bin/python /Users/zyq/PycharmProjects/Hello/main.py 
发生了异常: division by zero
程序执行完毕

Process finished with exit code 0

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

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

相关文章

展示和标注图像:探索Gradio AnnotatedImage模块的功能

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

代码生成器原理分析

代码生成器原理分析 理解代码生成器的需求和实现思路掌握freemaker的使用 理解数据库中的元数据完成环境搭建工作 浅谈代码生成器 概述 在项目开发过程中,关注点更多是在业务功能的开发及保证业务流程的正确性上,对于重复性的代码编写占据了程 序员…

指标综合评价(定性指标定量化、指标正相关化、赋权重)

目录 一、定性指标定量化 二、将指标同型化 线性比例变换法 极差变换法 二、评价指标赋予权重 三、综合评价 战斗机性能的综合评价问题 例:战斗机的性能指标主要包括最大速度、飞行半径、最大负载、隐身性能、垂直起降性能、可靠性、灵敏度等指标和相关费用。…

Vue+Element UI 生鲜管理系统简介及项目搭建,页面布局(一)

文章目录 浅谈一、背景二、搭建创建vue项目vue项目结构简介安装Element UI库安装axios安装querystring安装normalize.css安装echarts运行删除无用组件基础css样式导入 三、页面布局配置路由布局flex布局(弹性盒子)固定布局固定布局配置路由 浅谈 自从入…

【Rust】2、实战:文件、网络、时间、进程-线程-容器、内核、信号-中断-异常

文章目录 七、文件和存储7.2 serde 与 bincode 序列化7.3 实现一个 hexdump7.4 操作文件7.4.1 打开文件7.4.2 用 std::fs::Path 交互 7.5 基于 append 模式实现 kv数据库7.5.1 kv 模型7.5.2 命令行接口 7.6 前端代码7.6.1 用条件编译定制要编译的内容 7.7 核心:LIBA…

【Java高级语法】(十五)lambda表达式:给你一颗语法糖Lambda,解析函数式编程的杰作~

Java高级语法详解之lambda表达式 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法结构3.2 案例3.2.1 无参Lambda3.2.2 带有一个参数3.2.3 带有多个参数3.2.4 方法引用的简化形式 4️⃣ 应用场景5️⃣ 优化技巧6️⃣ 原理7️⃣ 注意性能问题🌾 总结 1️⃣ 概念 Java …

架构设计第十一讲:架构之高并发:限流

架构设计第十一讲:架构之高并发:限流 每个系统都有服务的上线,所以当流量超过服务极限能力时,系统可能会出现卡死、崩溃的情况,所以就有了降级和限流。限流其实就是:当高并发或者瞬时高并发时,为…

rabbitmq第三课-RabbitMQ高级功能详解以及常用插件实战

一、选择合适的队列. 实际上是可以选择三种队列类型的,classic经典队列,Quorum仲裁队列,Stream流式队列。 后面这两种队列也是RabbitMQ在最近的几个大的版本中推出的新的队列类型。3.8.x推出了Quorum仲裁队列,3.9.x推出了Stream流…

MyBatis何时使用一级缓存,何时使用二级缓存?

Mybatis设计2级缓存来提升数据检索效率,避免每次都查询数据库。 一、一级缓存 一级缓存 Mybatis 的一级缓存是指 SQLSession,一级缓存的作用域是 SQlSession , Mabits 默认开启一级缓存。 在同一个SqlSession中,执行相同的SQL查询时&#x…

基于STM32CUBEMX驱动TOF模块VL6180与VL6180X(2)----修改测量范围

概述 当使用VL6180传感器进行测距时,可以通过修改缩放因子来改变可测量的距离范围。VL6180是一种基于飞行时间原理的传感器,通过测量光信号的往返时间来确定物体与传感器之间的距离。 默认情况下,VL6180传感器的测距范围约为0至200毫米。然…

显卡检测工具:GPU-Z

今天小编为大家测试了一款轻量级的GPU显卡的测试工具,可以查看GPU的详细信息,以供各位同学们学习。 一、简单介绍 GPU-Z是一款方便实用的软件工具,专门为用户提供视频卡和GPU的详尽信息。它具有轻巧的特点,不需要安装即可使用&am…

2023版智慧高速智慧公路总体建设方案,售前人员必备方案

导读:原文《智慧高速智慧公路总体建设方案》共83页PPT(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 如需获取完整的电子版内容参考学习 您可以关注评论…

【雷达原理】基本雷达方程的推导

基本雷达方程 一、研究目的二、推导过程1、基本雷达方程常用的表达形式2、计算案例3、仿真代码 参考文献 一、研究目的 雷达方程定量地描述了作用距离与雷达参数及目标特性之间的关系。 研究雷达方程主要有以下作用: (1)根据雷达参数来估算雷…

慕课:笔记

课程链接:直面JavaScript中的30个疑难杂症_JavaScript面试题-慕课网 第二章:数据类型 数据类型是每门编程语言的必修之课,你是否对JavaScript的数据类型和检测存在困惑,本章节将为你揭晓其中的奥秘,让你对数据类型有…

矩阵压缩算法

当矩阵中存在着重复元素时,为了节省空间会采用压缩算法,关键在于原矩阵空间与压缩后数据结构的对应; 1.对称压缩:数据沿对角线对称的情况; 将矩阵压缩为一维数组,数组的长度是: 对于num[n][n…

VMware虚拟机暴露端口至公网方法流程详解

目录 需求背景 解决方法 准备工作 虚拟机ip设置方法 需求背景 一台电脑需要连接另一台电脑上的虚拟机的端口,直接ping是无法ping通的,因为本地虚拟机的端口未暴露至公网。 解决方法 虚拟机:CentOS 7 64 Linux 本机:Window…

C专家编程 —— 运行时数据结构

文章目录 代码和数据段代码与可执行文件中对应的位置可执行文件中的段在内存中的布局加入动态链接库的内存空间布局堆栈段的作用过程活动记录函数调用过程记录举例 static和auto关键字 汇编嵌入C代码 代码和数据 代码和数据的区别可以理解为编译时和运行时的分界线。 代码&…

guacamole 纯web rdp预研:相关JAVA基础

文章目录 guacamole 纯web rdp预研:相关JAVA基础1. pom.xml2 scm标签3 application/octet-stream4. tomcat webapps下war包5 maven-assembly-plugin maven assembly插件介绍什么是assembly? 6. Mavenz中的source插件的使用和注意事项。7. Maven私库安装与配置8. 配置…

深度学习之目标检测R-CNN模型算法流程详解说明(超详细理论篇)

1.R-CNN论文背景 2. R-CNN算法流程 3. R-CNN创新点 一、R-CNN论文背景 论文网址https://openaccess.thecvf.com/content_cvpr_2014/papers/Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf   RCNN(Region-based Convolutional Neural Networks&#xff…

牛客网基础语法81~90题

牛客网基础语法81~90题😘😘😘 💫前言:今天是咱们第九期刷牛客网上的题目。 💫目标:可以循环嵌套使用熟练,数组的变问题,对数学知识掌握更加清晰。 💫鸡汤&…