文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

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

在代码中,存在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异常处理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯