首页 » InfoTech »

Python异常处理中的else和finally

2017年1月17日 / 365次阅读
Python

打开支付宝首页,搜索“529018372”,即可领取红包!可重复领。

特色图片

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 "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in divide
TypeError: unsupported operand type(s) for /: 'str' and 'str'

本文链接:http://www.maixj.net/ict/python-else-finally-13963
云上小悟 麦新杰(QQ:1093023102)

相关文章

评论是美德

《Python异常处理中的else和finally》有1条评论

无力满足评论实名制,评论对非实名注册用户关闭,有事QQ:1093023102.

  • 麦新杰

    不能是try....else....,没有except的组合。 [ ]


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目

AD

ppdai

©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top