广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中的finally
  • 181
分享到

Python中的finally

Pythonfinally 2023-01-31 06:01:31 181人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

python中的finally 现代语言一般都内置了对异常处理的支持,其中较为广泛使用的就是try语句了。(by gashero)且一般来说其子句还包含有except和finally。Python从Modula-3语言得到了关于异常处理的

python中的finally

现代语言一般都内置了对异常处理的支持,其中较为广泛使用的就是try语句了。(by gashero)且一般来说其子句还包含有except和finally。Python从Modula-3语言得到了关于异常处理的灵感,其异常处理也使用了如上的方法,与Java、C#等语言的异常处理很相像,所以本文对finally的讨论相信也适用于这两种语言,不过我并没有实际测试过,希望大家辨证的看待finally在其他语言中的应用。

Python的try语句可以有两种格式,一种接except子句,另一种是接finally子句。这两种形式相互冲突,使用了一种就不允许使用另一种,而功能又各异。except子句的形式比较常见,相信大家已经有了较深的掌握,此处略过。本文主要讨论finally的用法。

try...finally的用处是无论是否发生异常都要确保资源释放代码的执行。一般来说,如果没有发生错误,执行过try语句块之后执行finally语句块,完成整个流程。如果try语句块发生了异常,抛出了这个异常,此时就马上进入finally语句块进行资源释放处理。如下从几个细节讨论finally的特性。

1、try中的return:
当在try语句块中含有return语句时,执行到return并不会直接返回,而是由Python忠实的再去执行finally语句块之后再执行return。(by gashero)从这里可以看出,只要程序没有突然终止,则finally中的资源释放语句一定会执行。无论发生什么异常都会执行到finally语句块中的代码。

2、finally之后呢?
实际测试看来,finally之后,try语句块中抛出的异常并没有被处理,而是直接被抛出到try...finally语句块之外了。并且是在finally语句块执行之后继续抛出这个异常的。
所以为了更好的处理这个异常,可以使用两层嵌套try语句块。内层的try语句块使用try...finally形式,确保资源释放代码的执行。外层try语句块使用try...except形式,可以很好的识别异常形式,并且分别处理。

3、如果希望直接finally掉呢?
有些时候在处理了finally中的资源释放之后就不再需要继续处理抛出的异常了,在这种情况下可以考虑在finally语句块中使用return语句。这样在资源释放之后直接返回,try语句块抛出的错误就不会继续向外抛出了。(by gashero)也就是节省了上面一条的外层try...except语句块了。当然,这样的后果是根本就不知道抛出过什么异常。

最后谈一条except子句需要注意的事情,就是多个except子句截获异常时,如果各个异常类之间具有继承关系,则子类应该写在前面,否则父类将会直接截获子类异常。放在后面的子类异常也就不会执行到了。

散会。
 

--结束END--

本文标题: Python中的finally

本文链接: https://www.lsjlt.com/news/189539.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python中的finally
    Python中的finally 现代语言一般都内置了对异常处理的支持,其中较为广泛使用的就是try语句了。(by gashero)且一般来说其子句还包含有except和finally。Python从Modula-3语言得到了关于异常处理的...
    99+
    2023-01-31
    Python finally
  • python中try-finally语句
    #!/usr/bin/python 'if error occur when open a file or readline' try: try: ccfile = open('file9',...
    99+
    2023-01-31
    语句 python finally
  • 如何在python中使用finally语句
    这篇文章给大家介绍如何在python中使用finally语句,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代码格式的要求...
    99+
    2023-06-14
  • Python学习之异常中的finally使用详解
    目录finally的功能与用法finally示例案例finally触发的必然性与优先级try语法伴随except或finally的必然性finally的历史今天我们来学习一下 异常语...
    99+
    2022-11-13
  • python中try-except-finally语句怎么使用
    本文小编为大家详细介绍“python中try-except-finally语句怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“python中try-except-finally语句怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-06-30
  • Python try-except-else-finally的具体使用
    目录try-excepttry-except-elsetry-finallytry-except 作用:处理异常情况 用法:try:后面写正常运行的代码,except + 异常情况:...
    99+
    2022-11-12
  • python finally语句怎么使用
    这篇文章主要讲解了“python finally语句怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python finally语句怎么使用”吧!说明无论try中是否发生异常,fina...
    99+
    2023-06-30
  • Python中用try-except-finally处理异常问题
    目录Python用try-except-finally处理异常作用意义结构执行流程Python的try…except…finally语句举个例子总结Pyt...
    99+
    2022-12-20
    Python try-except-finally try-except-finally处理异常 Python处理异常
  • try-except-finally语句怎么在python中使用
    这期内容当中小编将会给大家带来有关try-except-finally语句怎么在python中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java...
    99+
    2023-06-14
  • Java中final、finally、finalize的区别
    一、功能的区别 final:final关键词主要用于声明某个变量、方法或类是不可变的。一旦被final修饰,就不能被修改或重写。 finally:finally关键词主要用在异常处理中,无论try块中是否发生异常,fin...
    99+
    2023-10-29
    区别 final Java
  • java中的finally有什么作用
    在Java中,finally是一个关键字,用于定义一个代码块,该代码块始终会被执行,无论是否发生异常。finally块通常用于释放资...
    99+
    2023-10-11
    java
  • Try-Catch-Finally中的坑有哪些
    这篇文章主要讲解了“Try-Catch-Finally中的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Try-Catch-Finally中的坑有哪...
    99+
    2022-10-19
  • C#中Finally的用法是什么
    这篇文章主要介绍“C#中Finally的用法是什么”,在日常操作中,相信很多人在C#中Finally的用法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#中Finally的用法是什么”的疑惑有所帮助!...
    99+
    2023-06-17
  • java中final、finally、finalize之间的区别
    区别如下:final: 修饰符(关键字),用于声明属性,方法和类,分别表示属性不可变, 方法不可覆盖,类不可继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改...
    99+
    2016-01-30
    java入门 java final finally finalize 区别
  • Java中的finally一定会执行吗
    这篇文章主要介绍“Java中的finally一定会执行吗”,在日常操作中,相信很多人在Java中的finally一定会执行吗问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中的finally一定会执行吗...
    99+
    2023-06-29
  • Java中finally语法怎么用
    这篇文章主要介绍了Java中finally语法怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、finally语句块1.注意点:(1)finally语句块可以直接和tr...
    99+
    2023-06-02
  • java中finally有什么作用
    在Java中,finally关键字用于定义一个代码块,该代码块中的代码无论是否发生异常都会被执行。finally有以下几个作用:1....
    99+
    2023-10-08
    java
  • final、finally、finalize的详细分析
      java语言有有很多看起来相似,但用途却完全不同的要素,那么final,finally,finalize又有哪些不同之处呢  final  final可以用来修饰类、方法、变量,分别有不同的意义,  final修饰的class表示不可以...
    99+
    2023-06-02
  • final、finally、finalize()的区别(skycto JEEditor)
        final 表示最终的、不可改变的。用于修饰类、方法和变量。    finally 异常处理的一部分,它只能用在try/catch语句中,表示希望finally语句块中的代码最后一定...
    99+
    2023-06-02
  • Java中的异常处理(try,catch,finally,throw,throws)
    目录抛出异常throwObjects非空判断声明异常throws捕获异常try…catchfinally 代码块异常注意事项前言: Java异常处理的五个关键字:try...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作