19420107 发表于 2021-2-6 22:32:43

try finnally为什么要存在

经过我自己的上机测试,在try-except检测范围外的代码段仍然会被执行。那么写在try-finnally后面(必须被执行的代码)能不能放到try-except检测范围外?就比如上课讲的f.cloas( ),我认为完全可以放到检测范围外

crisfo 发表于 2021-2-6 22:44:28

个人理解,finally应该是针对try中的代码段来说的,也就是只有执行了try中的代码,finally才有意义。
如果独立出来,那就跟try中的代码无关了。
个人拙见,不知道对不对?

qq1151985918 发表于 2021-2-6 22:50:16

本帖最后由 qq1151985918 于 2021-2-6 23:01 编辑

当你测试过我给你的代码你就知道了。try 主要用于可能发生的异常,如果 try 异常就会执行 except ,那么如果 except 也异常呢?

try:
    print(a)
except:
    print(b)
finally:
    print("能打印")
try:
    print(a)
except:
    print(b)

print("不能打印")

19420107 发表于 2021-2-7 09:52:27

crisfo 发表于 2021-2-6 22:44
个人理解,finally应该是针对try中的代码段来说的,也就是只有执行了try中的代码,finally才有意义。
如果 ...

谢谢啦!懂啦!

19420107 发表于 2021-2-7 09:53:10

qq1151985918 发表于 2021-2-6 22:50
当你测试过我给你的代码你就知道了。try 主要用于可能发生的异常,如果 try 异常就会执行 except ,那么如 ...

谢谢你!!!

dingtian1989 发表于 2021-2-7 17:04:22

一般情况下,{:10_254:}
except可以用来做异常抛出,也可以执行业务代码。
finally用来对代码块做收尾,比如销毁实例,返回值等。
页: [1]
查看完整版本: try finnally为什么要存在