try…except…finally语句

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

完整的异常处理语句应该包含finally代码块,通常情况下,无论程序中有无异常产生,finally代码块中的代码都会被执行,其语法格式如下:

try:

    block1

except [ExceptionName [as alias]]:

    block2

finally:

    block3

对于try…except…finally语句的理解并不复杂,它只是比try…except语句多了一个finally语句,如果程序中有一些在任何情形中都必须执行的代码,那么就可以将它们放在finally代码块中。

说明:使用except子句是为了允许处理异常。无论是否引发了异常,使用finally子句都可以执行清理代码。如果分配了有限的资源(如打开文件),则应将释放这些资源的代码放置在finally代码块中。

例如,再对实例02进行修改,实现当division()函数在执行时无论是否抛出异常,都输出文字“进行了一次分苹果操作”。修改后的代码如下:

def division():

    '''功能:分苹果'''

    print("\n===================== 分苹果了 =====================\n")

    apple = int(input("请输入苹果的个数:"))          # 输入苹果的数量

    children = int(input("请输入来了几个小朋友:"))

    result = apple // children                       # 计算每人分几个苹果

    remain = apple - result * children                  # 计算余下几个苹果

    if remain > 0:

        print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result,

              "个,剩下", remain, "个。")

    else:

        print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result, "个。")

if __name__ == '__main__':

    try:                                                # 捕获异常

        division()                                  # 调用分苹果的函数

    except ZeroDivisionError:                         # 处理异常

        print("\n出错了 ~_~ ――苹果不能被0个小朋友分!")

    except ValueError as e:                             # 处理ValueError异常

        print("输入错误:", e)                          # 输出错误原因

    else:                                                # 没有抛出异常时执行

        print("分苹果顺利完成...")

    finally:                                              # 无论是否抛出异常都执行

        print("进行了一次分苹果操作。")

执行以上程序,将显示如图8所示的运行结果。

图8  不抛异常时提示相应信息

至此,已经介绍了异常处理语句的try…except、try…except…else和try…except…finally等形式。下面通过图9说明异常处理语句的各个子句的执行关系。

图9  异常处理语句的不同子句的执行关系

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

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

相关文章

2024 年该如何利用 MidJourney 创作AI艺术(详细教程)

什么是 Midjourney Midjourney 是根据文本提示创建图像的生成式人工智能的优秀范例。与 Dall-E 和 Stable Diffusion 一样,它已成为最受欢迎的人工智能艺术创作工具之一。与竞争对手不同的是,Midjourney 是自筹资金和封闭源代码的,因此对它的…

【WRF理论第二期】模型目录介绍

WRF理论第二期:模型目录介绍 1 WRF主目录2 WPS主目录3 编译后的可执行文件4 运行目录参考 了解 WRF 模型的目录结构有助于有效地管理和操作模型,从而确保模拟和分析工作的顺利进行。以下分解介绍WRF主目录、WPS主目录等。 Github-wrf-model/WRF 1 WRF…

leetCode-hot100-二分查找专题

二分查找 简介原理分析易错点分析例题33.搜索旋转排序数组34.在排序数组中查找元素的第一个和最后一个位置35.搜索插入位置240.搜索二维矩阵 Ⅱ 简介 二分查找,是指在有序(升序/降序)数组查找符合条件的元素,或者确定某个区间左右…

找不到steam_api64.dll,无法继续执行的原因及解决方法

电脑已经成为我们生活中不可或缺的一部分。然而,在使用电脑的过程中,我们经常会遇到一些常见的问题,其中之一就是找不到某个特定的动态链接库文件,比如steamapi64.dll。这个问题可能会导致某些应用程序无法正常运行,给…

关于博图17安装体验过程—博图17安装失败原因(STEP7 许可证找不到)

目录 一、序言 二、正片 一、序言 该失败原因是在我使用Win11专业版安装博图17时出现的问题,也仅代表我的体验过程!以下我将安装过程和解决问题的过程描述一下,希望可以帮助和我一样自己安装博图时能够解决出现的问题。 二、正片 如果阁下…

linux驱动学习(五)之字符设备

需要板子一起学习的可以这里购买(含资料):点击跳转 一、 linux设备驱动分类 1、字符设备---char 应用程序与驱动程序在进行数据传输时,数据以"字节"为单位。 特点: [1] 按照顺序进行数据传输 [2] 数据传…

vscode专区

1.展示多行的文件导航标签,而非只有1行 1.1打开设置 1.2搜索该设置"workbench.editor.wrap.tabs",并勾选 1.3效果对比

vue+vscode 快速搭建运行调试环境与发布

1.安装node.js Node.js — Run JavaScript Everywhere 默认不断next 2.更换镜像地址 运行-cmd 执行以下代码安装 npm config set registry https://registry.npmmirror.com 检查node.js和镜像是否是否成功 node -v npm -v npm config get registry 3.安装打包工具 …

吊车报警的工作原理和使用场景_鼎跃安全

在现代建筑施工过程中,经常使用大型机械设备,如挖掘机、吊车、打桩机等,这些设备在施工过程中发挥着越来越重要的作用;同时,这些设备的作业频繁进行作业,对于接触到高压电线的风险也随之增加。大型机械设备…

Leetcode学习

回文数 反转一半数字 第一个想法是将数字转换为字符串,并检查字符串是否为回文。 但是,这需要额外的非常量空间来创建问题描述中所不允许的字符串。 第二个想法是将数字本身反转,然后将反转的数字与原始数字比较,如果它们是相同…

【计算机毕设】基于SpringBoot的中小企业设备管理系统设计与实现 - 源码免费(私信领取)

免费领取源码 | 项目完整可运行 | v:chengn7890 诚招源码校园代理! 1. 研究目的 在中小企业中,设备管理是确保生产和运营效率的重要环节。传统的设备管理通常依赖于手工记录和人工管理,容易导致数据不准确、…

近屿OJAC带你解读:什么是ML?

概念定义 ML是机器学习(Machine Learning)的缩写。机器学习是人工智能的一个分支,它使计算机系统能够从数据中学习和改进,而无需进行明确的编程指令。简单来说,机器学习涉及到开发算法和统计模型,让计算机…

UE4 使用自带的插件制作音频可视化

1.插件默认为开启 2.新建共感NRT,选择要使用的音频 3.添加音频组件,添加共感NRT变量,选择新建的共感NRT对象 4.编写蓝图

基础—SQL—DQL(数据查询语言)分页查询

一、引言 上一篇博客学习了排序查询,这次来讲查询的最后一个部分:分页查询。 涉及到的关键字是:LIMIT 。 二、DQL—分页查询 对于分页,不管以后做的是传统的管理系统还是做互联网的项目,基本上都会遇到分页查询的操…

计网ppt标黄知识点整理第(4)章节——谢希仁版本、期末复习自用

路由器:查找转发表,转发分组。 IP网的意义:当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节。如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就…

每天坚持写java锻炼能力---第一天(6.4)

今天的目标是菜单: B站/马士兵的项目菜单 package java1;import java.util.Scanner;public class Test {public static void main(String[] args) {while(true){ //3.加入死循环,让输入一直有System.out.println();System.out.println("--->项…

Linux 系统怎么快速「批量重命名」文件

如果需要对文件批量重命名,怎么办,是不是要找个工具,下载看这么使用。其实在 Linux、macOS 系统上使用脚本可以轻松搞定。 如,这里有一批图片文件,后缀名可能是jpg、jpeg、png 等,名称如 “我是待重命名的…

【WRF调试运行第一期】安装WRF模型所需平台

WRF实践实操第一期:安装WRF模型所需平台 1 操作系统2 先决条件软件3 程序流(Program Flow)4 文件说明软件安装1-Cygwin参考 安装 WRF(Weather Research and Forecasting)模型需要准备适当的硬件和软件平台。 相关介绍可…

【linux根分区扩容】

前言: 今天在安装软件的时候发现我的linux的根分区空间不足了,在网上搜索哈资料解决了。 解决根分区空间不足的问题方法: 第一:用lsblk命令查看 发现还有一些空间不在了。 第二:安装扩容工具: yum inst…

springCloud中将redis共用到common模块

一、 springCloud作为公共模块搭建框架 springCloud 微服务模块中将redis作为公共模块进行的搭建结构图&#xff0c;如下&#xff1a; 二、redis 公共模块的搭建框架 如上架构&#xff0c;代码如下pom.xml 关键代码&#xff1a; <dependencies><!-- SpringBoot Boo…