> 文档中心 > Python零基础入门篇 - 43 - 异常处理的避坑指南

Python零基础入门篇 - 43 - 异常处理的避坑指南


前言
✌ 作者简介:渴望力量的哈士奇,大家可以叫我 🐶哈士奇🐶 。(我真的养了一只哈士奇)
📑 个人主页:渴望力量的哈士奇主页
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥 如果感觉博主的文章还不错的话,还请不吝👍关注、点赞、收藏三连支持👍一下博主哦
💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬

📕系列专栏::
               👍 Python全栈系列 - [更新中]    ➡️➡️➡️ 【 本文在该系列】
               👋 网安之路系列
​                       🍋 网安之路踩坑篇
​                       🍋 网安知识扫盲篇
​                       🍋 Vulhub 漏洞复现篇
​                       🍋 Shell脚本编程篇
​                       🍋 Web攻防篇  ➡️➡️➡️ 2021年9月3日停止更新,转战先知等安全社区
​                       🍋 渗透工具使用集锦  ➡️➡️➡️ 2021年9月3日停止更新,转战先知等安全社区
​                ⭐️ 点点点工程师系列
​                       🍹 测试神器 - Charles 篇
​                       🍹 测试神器 - Fiddler 篇
​                       🍹 测试神器 - Jmeter 篇
​                       🍹 自动化 - RobotFrameWork 系列
​                       🍹 自动化 - 基于 JAVA 实现的WEB端UI自动化
                       🍹 自动化 - 基于 MonkeyRunner 实现的APP端UI自动化
​                🤗 2019年之前学习Python留下的乱七八糟系列

🎉🎉欢迎持续关注🎉🎉

Python零基础入门篇 - 43 - 异常处理的避坑指南 Python零基础入门篇 - 43 - 异常处理的避坑指南

文章目录

    • finally 与 return 的执行顺序
    • else 与 return 的执行顺序
    • 总结

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

在代码中,存在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。