详解Python异常处理中的Finally else的功能

 更新时间:2017年12月29日 10:53:03   作者:Cmuhy   我要评论
本篇文章主要介绍了详解Python异常处理中的Finally else的功能,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Python使用Try Exception来处理异常机制 若Exception中有Try对应的异常处理,则Try - exception之后的代码将被执行,但若Try - exception中没有对应的代码,则程序抛出Traceback停止运行 那么else finally就是针对这两种情况带来的后果分别相应的关键字

else

如果一个Try - exception中,没有发生异常,即exception没有执行,那么将会执行else语句的内容

反之,如果触发了Try - exception(异常在exception中被定义),那么将会执行exception中的内容,而不执行else中的内容

下面代码在python 3中运行通过

try:
  a = 1 / 0
except ZeroDivisionError:
  print("Division is 0 ,Wrong!")
else:
  print("Program is running here!")

由于此时触发了Try - exception,所以执行exception

不执行else

输出结果:Division is 0 ,Wrong!

try:
  a = 1 / 1
except ZeroDivisionError:
  print("Division is 0 ,Wrong!")
else:
  print("Program is running here!")

同理,这段代码由于try中无异常,所以执行else语句

输出结果:Program is running here!

所以如果try中的异常在exception中被指出,那么:

Try - exception-else中,执行了exception不执行else,执行else不执行exception。

或者这么理解:

作者希望Try - exception是指出错误的,如果Try - exception并没有指出错误,则是另外(else)的情况,所以执行else语句

finally

如果try中的异常没有在exception中被指出,那么系统将会抛出Traceback(默认错误代码),并且终止程序,接下来的所有代码都不会被执行,但如果有Finally关键字,则会在程序抛出Traceback之前(程序最后一口气的时候),执行finally中的语句。这个方法在某些必须要结束的操作中颇为有用,如释放文件句柄,或释放内存空间等。

try:
  a = 1 / '1'
except ZeroDivisionError:
  print("Division is 0 ,Wrong!")
else:
  print("Program is running here!")

这个程序会输出Traceback
Traceback (most recent call last):
File “*********************, line 2, in
a = 1 / ‘1'
TypeError: unsupported operand type(s) for /: ‘int' and ‘str'

因为try中的异常没有在exception中被指出,如果改为下面程序

try:
  a = 1 / '1'
except ZeroDivisionError:
  print("Division is 0 ,Wrong!")
finally:
  print("Program is running here!")

输出结果:

Traceback (most recent call last):
File “********************”, line 2, in
a = 1 / ‘1'
TypeError: unsupported operand type(s) for /: ‘int' and ‘str'
Program is running here!

可见,即使Traceback没有消除,但依旧输出了print语句,这就是相当于一个程序的收尾工作(finally)

而且如果程序没有任何错误,finally也会执行

所以可以这么理解:

不管程序有没有异常,finally中的语句必会执行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持澳门金沙网上娱乐。

相关文章

  • python实现从本地摄像头和网络摄像头截取图片功能

    python实现从本地摄像头和网络摄像头截取图片功能

    这篇文章主要介绍了python实现从本地摄像头和网络摄像头截取图片功能 ,文中给大家提到了python , opencv 打开网络摄像头读取图像的实现代码,需要的朋友可以参考下
    2019-07-07
  • python中对_init_的理解及实例解析

    python中对_init_的理解及实例解析

    这篇文章主要介绍了python中对_init_的理解及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 详解python中requirements.txt的一切

    详解python中requirements.txt的一切

    最近学习到了python中的requirements.txt,或许是因为太简单了,网上没有搜到比较完整的介绍,所以这篇文章主要介绍了关于python中requirements.txt的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • python 通过类中一个方法获取另一个方法变量的实例

    python 通过类中一个方法获取另一个方法变量的实例

    今天小编就为大家分享一篇python 通过类中一个方法获取另一个方法变量的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python随机读取文件实现实例

    Python随机读取文件实现实例

    这篇文章主要介绍了Python随机读取文件的相关资料,需要的朋友可以参考下
    2017-05-05
  • python3抓取中文网页的方法

    python3抓取中文网页的方法

    这篇文章主要介绍了python3抓取中文网页的方法,实例分析了Python3页面抓取及编码转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 在python2.7中用numpy.reshape 对图像进行切割的方法

    在python2.7中用numpy.reshape 对图像进行切割的方法

    今天小编就为大家分享一篇在python2.7中用numpy.reshape 对图像进行切割的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python 文件管理实例详解

    Python 文件管理实例详解

    这篇文章主要介绍了Python 文件管理的方法,以实例形式较为详细的分析了Python针对文件的各种常用函数使用方法与相关注意事项,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Python随机生成一个6位的验证码代码分享

    Python随机生成一个6位的验证码代码分享

    这篇文章主要介绍了Python随机生成一个6位的验证码代码分享,本文直接给出代码实例,需要的朋友可以参考下
    2015-03-03
  • TensorFlow实现非线性支持向量机的实现方法

    TensorFlow实现非线性支持向量机的实现方法

    本篇文章主要介绍了TensorFlow实现非线性支持向量机的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04

最新评论