Python学习之异常处理的避坑指南

 更新时间:2022年03月17日 15:04:59   作者:渴望力量的哈士奇  
这篇文章主要介绍了Python中异常处理的一些避坑指南,文中的示例代码讲解详细,对我们学习Python有一定帮助,感兴趣的小伙伴可以学习一下

最终想了想,还是把这个章节单独拎出来,虽然字数不多。

在代码中,存在return也应当执行finally;

存在return时,else是不执行的;

无return时,else正常执行;

如果发生异常,则else也不执行

finally 与 return 的执行顺序

示例代码如下:

class Test(object):

    def division(self, num1, num2):
        try:
            if num2 == 0:
                return '除数不能为0'
            avg = num1 / num2
            return avg
        except Exception as e:
            print('ERROR')
        finally:
            print('FINALLY')


if __name__ == '__main__':
    test = Test()
    print(test.division(6, 0))
    
# >>> 执行结果如下:
# >>> FINALLY
# >>> 除数不能为0 

注意:即使有return也要是会执行finally的,而且是在return之前执行它。那么最后的结果为。

else 与 return 的执行顺序

示例代码如下:

class Test(object):

    def division(self, num1, num2):
        try:
            avg = num1 / num2
            return avg
        except Exception as e:
            print('ERROR')
        else:
            print('No ERROR')
        finally:
            print('FINALLY')


if __name__ == '__main__':
    test = Test()
    print(test.division(6, 2))


# >>> 执行结果如下:
# >>> FINALLY
# >>> 3.0

注意:有return时else是不执行的。所以执行结果如上面的示例代码

那么 无 return 时,执行结果又怎样?

class Test(object):

    def division(self, num1, num2):
        try:
            avg = num1 / num2
            # return avg
        except Exception as e:
            print('ERROR')
        else:
            print('No ERROR')
        finally:
            print('FINALLY')


if __name__ == '__main__':
    test = Test()
    print(test.division(6, 2))
    
# >>> 执行结果如下:
# >>> No ERROR
# >>> FINALLY
# >>> None

从运行结果我们得出结论:无return时,正常执行else 。

如果是发生异常的情况下, else 也是不会执行的。代码示例如下:

class Test(object):

    def division(self, num1, num2):
        try:
            avg = num1 / num2
            return avg
        except Exception as e:
            print('ERROR')
        else:
            print('No ERROR')
        finally:
            print('FINALLY')


if __name__ == '__main__':
    test = Test()
    print(test.division(4, 0))
    
# >>> 执行结果如下:
# >>> ERROR
# >>> FINALLY
# >>> None

总结

1、finally 与 return 的执行 顺序;即使有 return 也要执行 finally 的, 而且是在 return 之前执行它。

2、else 与 return 的执行顺序;有 return 时, else 是不执行的。无 return 时, 正常执行的 else 如果发生异常则不会继续执行else。

到此这篇关于Python学习之异常处理的避坑指南的文章就介绍到这了,更多相关Python异常处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python Socket编程详细介绍

    Python Socket编程详细介绍

    这篇文章主要介绍了Python Socket编程详细介绍,socket可以建立连接,传递数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • Python中字符串与编码示例代码

    Python中字符串与编码示例代码

    这篇文章主要介绍了Python中字符串与编码示例代码,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • 简述Python中的进程、线程、协程

    简述Python中的进程、线程、协程

    这篇文章主要介绍了Python中的进程、线程、协程的相关资料,需要的朋友可以参考下
    2016-03-03
  • Python爬虫实现热门电影信息采集

    Python爬虫实现热门电影信息采集

    这篇文章主要介绍了利用Python爬虫采集热门电影信息,文中示例代码很详细,具有一定的学习价值,感兴趣的小伙伴快来跟随小编一起学习吧
    2021-12-12
  • python实现统计文本中单词出现的频率详解

    python实现统计文本中单词出现的频率详解

    这篇文章主要介绍了python统计文本中单词出现频率,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • python生成随机密码或随机字符串的方法

    python生成随机密码或随机字符串的方法

    这篇文章主要介绍了python生成随机密码或随机字符串的方法,涉及Python字符串及随机数的相关使用技巧,非常简单实用,需要的朋友可以参考下
    2015-07-07
  • Pytest如何使用mark的方法

    Pytest如何使用mark的方法

    本文主要介绍了Pytest如何使用mark的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 深入讲解Python中面向对象编程的相关知识

    深入讲解Python中面向对象编程的相关知识

    这篇文章主要介绍了深入讲解Python中面向对象编程的相关知识,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • python实现将汉字转换成汉语拼音的库

    python实现将汉字转换成汉语拼音的库

    这篇文章主要介绍了python实现将汉字转换成汉语拼音的库,涉及Python调用word.data字段实现将汉字转换成拼音的功能,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • 利用Python Matlab绘制曲线图的简单实例

    利用Python Matlab绘制曲线图的简单实例

    们经常会遇到这种情况,有一个数学函数,我们希望了解他的图像,这个时候使用python 的matplotlib就可以帮助我们,下面这篇文章主要介绍了利用Python Matlab绘制曲线图的相关资料,需要的朋友可以参考下
    2021-12-12

最新评论