对python中的try、except、finally 执行顺序详解

yizhihongxing

对Python中的try、except、finally 执行顺序详解

在Python中,try、except和finally是我们常用的异常处理方式,有一个清晰的执行顺序很重要。在这篇攻略中,我们将详细探讨这些关键字的执行顺序,以便更有效地处理异常。

try、except和finally

先回顾一下这些关键字的含义和用途:

  • try:执行可能会抛出异常的代码块;
  • except:当try代码块中出现了异常,执行此代码块中的代码;
  • finally:无论try代码块中是否有异常,都会执行此代码块中的代码。

执行顺序

下面我们来具体分析try、except和finally的执行顺序。我们先来看一个最简单的try-except语句:

try:
    print(1 / 0)
except:
    print("发生异常")

执行结果如下:

发生异常

从上面的例子中,我们可以看出try代码块中出现了异常,于是执行了except代码块中的代码。注意到这里的except没有指定具体的异常类型,这意味着它可以捕获所有类型的异常。

接下来,我们添加一个finally代码块,看看它的执行顺序:

try:
    print(1 / 0)
except:
    print("发生异常")
finally:
    print("finally执行")

执行结果如下:

发生异常
finally执行

从上面的例子中,我们发现try代码块中出现了异常,因此首先执行except代码块中的代码;然后,无论我们是否出现异常,都会执行finally代码块中的代码。

再来看一个稍微复杂一点的例子:

try:
    print("try执行")
    raise Exception
except:
    print("except执行")
finally:
    print("finally执行")

执行结果如下:

try执行
except执行
finally执行

从上面的例子中,我们发现try代码块中执行了一些操作,然后抛出了一个异常。因为我们没有指定具体的异常类型,所以except代码块能捕获所有类型的异常。except代码块中的代码被执行之后,finally代码块也被执行。这就是try、except和finally关键字的执行顺序。

注意事项

最后,我们需要特别注意几个要点:

  1. 只有try和finally的语句是互相配对的,可以单独出现。try语句可以单独出现,但finally语句不能单独出现,必须和try语句相配对。

  2. try语句中可以只有try语句,也可以拥有多个except、一个else和一个finally,但except、else和finally块的顺序是固定的。

  3. 可以通过raise语句在任何位置手动触发异常,从而在代码中添加自定义的异常处理逻辑。

示例说明

现在,我们来看两个更为详细的示例:

  1. 简单的异常处理
try:
    x = int(input("输入一个数字: "))
    print(x)
except ValueError:
    print("Oops!  输入不是一个数字。  请再试一次......")
finally:
    print("我们一直在这里......")

执行结果:

输入一个数字: 1
1
我们一直在这里......

从上面的例子可以看出:try语句中的代码块出现了一个异常,我们使用except ValueError捕获了它,并输出了一条消息。最后,无论有没有出现异常,finally语句都会得到执行。

  1. 自定义的异常处理
class MoneyError(Exception):
    def __init__(self, msg):
        self.msg = msg

    def __str__(self):
        return self.msg

def get_money(money):
    if money < 0:
        raise MoneyError("金额不能小于0")

try:
    get_money(-1)
except MoneyError as me:
    print(me)
finally:
    print("我们一直在这里......")

执行结果:

金额不能小于0
我们一直在这里......

从上面的例子可以看出,我们自定义了一个异常类MoneyError,并使用raise语句抛出了这个异常。在try语句中调用get_money(-1)后抛出了这个异常,except MoneyError捕获了它并输出了一条错误消息。finally语句也得到了执行。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:对python中的try、except、finally 执行顺序详解 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Python用Pillow(PIL)进行简单的图像操作方法

    下面是详细的Python用Pillow(PIL)进行简单的图像操作方法攻略。 1. 安装Pillow 要使用Pillow进行图像操作,我们首先需要安装Pillow。通常可以通过pip命令来安装: pip install Pillow 2. 打开和保存图像 Pillow提供了非常方便的打开和保存图像功能,可以用一行代码就完成。下面是一个例子: from PIL…

    python 2023年5月14日
    00
  • 图片的腐蚀,膨胀,开丶闭运算,梯度计算,礼帽与黑帽

    1 腐蚀操作   用于图片的去毛刺,内容削减    1 #腐蚀操作 2 #cv2.erode(src,kernel,iterations) 3 #src是图片数字化数组 4 #kernel则是一个盒,对该盒内的像素进行复试操作,值越小腐蚀能力越狠 5 #iterations是一个迭代次数,就是说你对这个图片进行几次的腐蚀操作 6 kernel = np.on…

    python 2023年4月22日
    00
  • Python3 元组tuple入门基础

    Python3元组tuple入门基础 在Python中,元组(tuple)是一个有序且不可变的序列。这意味着一旦定义,元组中的元素就不可以更改。 创建元组 元组的创建方式相对简单,只需要用小括号将元素括起来即可。例如: mytuple = (1, 2, 3) print(mytuple) # 输出 (1, 2, 3) 需要注意,在定义只有一个元素的元组时,必…

    python 2023年5月14日
    00
  • python如何获取当前系统的日期

    获取当前系统日期的方法,在Python语言中是通过引入标准库datetime来实现的。其具体过程如下: 导入 datetime 模块 要使用datetime模块,首先需要在代码中导入该模块。使用以下代码行即可导入: import datetime 获取今天的日期 要获取今天的日期,可以使用datetime模块中的 date 类,然后调用today方法获取当前…

    python 2023年5月30日
    00
  • python 解决cv2绘制中文乱码问题

    针对Python解决cv2绘制中文乱码问题,最常用的方法是将中文字体文件放到指定目录下,代码中可以指定字体文件的路径。下面给出完整的攻略: 1. 下载中文字体文件 使用cv2绘图时,乱码问题主要是因为缺少合适的中文字体文件,所以我们需要下载中文字体文件解决这个问题。可以使用开源字体的中文字体文件进行下载,常用的比如“思源宋体”。 下载思源宋体的中文字体文件,…

    python 2023年5月20日
    00
  • 如何在 Redis 中存储 Python 对象?

    在 Redis 中存储 Python 对象是一种非常常见的操作,可以使用 Redis-py 库中的 pickle 序列化模块将 Python 对象序列化为字符串,然后将其存储在 Redis 中。在本文,我们将介绍如何在 Redis 中存储 Python 对象的完整使用攻略,包括连接 Redis 数据库、序列化和反序列化 Python 对象、存储和获取 Pyt…

    python 2023年5月12日
    00
  • 基于Python实现五子棋-(人机对战)

    基于 Python 实现五子棋 – (人机对战)攻略 项目简介 五子棋是一种两个人对弈的游戏。该游戏使用棋盘和棋子,在棋盘上逐步落子,目标是在棋盘上先形成一条连续的、由自己的棋子构成的直线而获胜。 这个项目是通过 Python 实现的基础版五子棋,玩家可以选择与 AI 进行人机对战。该游戏最终的目标是让玩家了解到如何运用 Python 语言进行基础游戏开发以…

    python 2023年5月23日
    00
  • python try 异常处理(史上最全)

    Python Try-Except 异常处理指南 Python 中的异常处理是一种用于处理程序出现错误和异常情况的技术。在开发过程中,程序出现错误是一种必然情况,通过合理的异常处理,能够使我们的程序更加稳定和健壮。本文将介绍 Python 中关于异常处理的知识点。 异常概述 异常是指在程序运行时发生的错误,例如访问不存在的变量、除数为零、调用不存在的方法等。…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部