Python语言可能是最接近人类能够自然理解的编程语言,但是编程语言跟人类语言有个非常明显的区别,那就是灵活性。人类语言很灵活,怎么说对方都能够理解,语法什么的,在日常对话中并不重要;但是用编程语言写代码,就必须严格按照既定语法来书写,否则就是syntax error。本文总结Python语言在进行异常处理(使用try.....except......语句)时,所使用的else和finally的具体含义。

在Python循环语句中的else分支一文中,简单提到了异常处理时的else,这里再详细总结:

1, else是异常处理时的一个可选分支;

2, 必须出现在所有except的分支之后;

3, 什么时候执行else分支:在try部分代码没有发生异常的时候;换言之,如果try部分发生了异常,就不再执行else分支;

异常处理中的finally分支与else不一样!

Python官方教程是这样解释的:

A finally clause is always executed before leaving the try statement, whether an exception has occurred or not. When an exception has occurred in the try clause and has not been handled by an except clause (or it has occurred in an except or else clause), it is re-raised after the finally clause has been executed. The finally clause is also executed “on the way out” when any other clause of the try statement is left via a break, continue or return statement.

麦新杰翻译:

finally分支总是会被执行,不管异常有没有发生。当异常在try部分发生,但是没有被except分支处理(或者在except或else分支发生),这个异常会在finally分支执行之后,被re-raised。当try部分有break,continue或者return语句时,finally一样会在离开try的时候被执行。

Python官方给了一个代码示例,可以用来理解else和finally的不同:

>>> def divide(x, y):

... try:

... result = x / y

... except ZeroDivisionError:

... print("division by zero!")

... else:

... print("result is", result)

... finally:

... print("executing finally clause")

...

>>> divide(2, 1)

result is 2.0

executing finally clause

>>> divide(2, 0)

division by zero!

executing finally clause

>>> divide("2", "1")

executing finally clause

Traceback (most recent call last):

File "", line 1, in

File "", line 3, in divide

TypeError: unsupported operand type(s) for /: 'str' and 'str'

python finally语句里面出现异常_Python异常处理中的else和finally相关推荐

  1. python重命名异常_python异常处理

    异常处理 为什么需要异常处理 写程序没有人敢保证一定不会出现错误,所以异常处理就是提供给开发者在可能出现bug的位置提示错误信息 异常的一半形式 try: 需要检测的语句 except 捕获的类型 a ...

  2. python 打开本地程序发生异常_Python中的异常处理

    Python中的异常事件: 当Python遇到无法正常处理的事件时,便是异常发生的时候,Python将异常也当作一个对象,尽管他是出错的.当发生异常时候我们要捕获他,否则程序就会中断运行. Pytho ...

  3. python语言语句块标记是_Python的基本语法——语句块

    1.语句块是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语句: 2在代码前放置空格来缩进语句即可创建语句块,语句块中的每行必须是同样的缩进量: 3.缩进:Python开发者有意让违反了缩 ...

  4. python输入语句是什么意思_Python输入/输出语句

    Python输出语句print函数 print()函数基本使用 打印整形数据 打印浮点型数据 打印字符型数据 >>> print(12) 12 >>> print( ...

  5. java 异常 return_Java异常处理中同时有finally和return语句的执行问题

    在Java中当try.finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行,大家众说纷纭,有的说会执行,有的说不会执行,到底哪种说法正确,现在通过下面的例子 ...

  6. python异常处理中不会用到的关键字_Python异常处理中不会用到的关键字是

    Python异常处理中不会用到的关键字是 答:if 制造商在某一地区通过最合适的几家中间商分销其产品,这种分销策略是 答:选择分销 直角坐标和极坐标是两种不同的坐标表示方法,我们可以根据具体情况选用合 ...

  7. python循环语句for 循环十次_python循环语句for循环十次

    python的for循环语句怎么写 for循环列表操作方法 >>>a = [1,2,3,4] >>>for i in a: >>> print i ...

  8. python 处理异常_Python异常处理– Python尝试除外

    python 处理异常 In our previous tutorial, we discussed about Python Directory. In this tutorial, we are ...

  9. python 处理异常_Python异常处理:

    python 处理异常 While the try and except block are for handling exceptions, the raise keyword on the con ...

最新文章

  1. Opencv Mediapipe 人体追踪
  2. php动态验证码脚本,这个PHP脚本有什么问题吗? (验证码)
  3. [转]SQL Server开发技巧
  4. Linux下安装配置EasyPR中文车牌识别系统
  5. JavaScript:从此不再怕闭包
  6. 转专业入门NLP,这样学就对了
  7. 如此简单 | ElasticSearch 最全详细使用教程
  8. word如何一键全选_学会这七个Word小技巧,五分钟完成3小时的工作
  9. 新Rider预览版发布,对F#的支持是亮点
  10. Ruby中带有示例的Hash.key?(value)方法
  11. 智能问答系统方法综述
  12. 精通JavaScript攻击框架:AttackAPI(上)
  13. bat批处理注册dll
  14. 计算机网络分开哪些阶段,物联网的发展可以分为哪四个阶段?
  15. Linux7下Mysql5.7搭建MHA(0.58版本)
  16. AutoVue 21.0.1新版本特性:支持在没有Applets的浏览器中运行
  17. 2021-2022年度“扣哒杯”AI世青赛初赛落下帷幕
  18. 亚历山大对马其顿士兵的演说(经典演说
  19. unet医学肺部ct图分割简单记录
  20. 苹果手机使用爱思助手安装ipa软件

热门文章

  1. JAVA设计模式 - 建造者模式
  2. gdal数据类型_科学网-gdal数据类型的代码的核心定义文件-林清莹的博文
  3. 高考成绩查询2021年莆田市,2021年莆田高考志愿填报系统入口
  4. linux init 参数,Objective-C中实现覆写init函数以及在初始化时添加参数
  5. alook浏览器_alook浏览器下载-Alook浏览器iOS版下载 苹果版v10.8-PC6苹果网
  6. Redis的安装配置与介绍(Windows版)
  7. 服务至上——安擎的待“客”之道
  8. JavaScript Debug 之 Console
  9. LAMP+LNMP(一) LAMP架构概述
  10. DevExpress GridView 添加和设置右键菜单