20201209_120__finally结构

首页 » Python » 正文

try…except…finally 结构

try…except…finally 结构中,finally 块无论是否发生异常都会被执行;通常用来释放 try 块中申请的资源。
finally块中的语句不仅在是否报错的情况下都执行;并且即使在上层循环体的break语句之后,上层循环体结束时finally语句块中的代码也会执行。

【例1】try…except…finally 结构的使用

while True:
    try:
        a = input('请输入被除数:')
        if a == 'quit':
            print('退出循环。')
            break
        b = input('请输入除数:')
        c = float(a) / float(b)
    except BaseException as e:
        print(e)
    else:
        print('除法运算的结果是:{}'.format(c))
    finally:
        print('我是finally块中的语句,不管是否发生异常,我都执行。')
    print('一个循环结束。')
print('程序结束。')

运行结果:
运行结果中可以看到:finally块中的语句不仅在是否报错的情况下都执行,并且在循环上层循环体结束时也执行了。
20201209_120__finally结构

应用示例
【例2】读取文件,finally 中保证关闭文件资源

try:
    f = open('f:/a.txt','r')
    content = f.readline()
    print(content)
except BaseException as e:
    print(e)
finally:
    f.close()  # 释放资源。此处也可能会发生异常,若发生异常,则程序终止,不会往下执行。
print('step4')

运行结果:
20201209_120__finally结构

【例2.1】改进例2程序,使之不报错,可以继续往下执行

try:
    f = open('f:/a.txt','r')
    content = f.readline()
    print(content)
except BaseException as e:
    print(e)
finally:
    try:
        f.close()  # 释放资源。此处也可能会发生异常,若发生异常,则程序终止,不会往下执行。
    except BaseException as g:
        print(g)
print('step4')

运行结果:
20201209_120__finally结构

未经允许不得转载:作者:1324-易同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《20201209_120__finally结构》 发布于2020-12-10

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录