怎么理解 Python 文档中的这句话
高洛峰
高洛峰 2017-04-17 15:41:22
[Python讨论组]
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
迷茫

如果用 try ... except 很可能会捕获到自己不想要的类型的异常,或自己不期望的函数抛出的异常。
比如这样的代码:

try:
    f = open(...)
    # 在此期间又做了点别的
    f.close()
except OSError:
    ...

OSError 可能有自己不期待的异常类型,或者不是文件操作引起的异常。
如果在 except 中处理不当,就会导致对应的异常没有得到正确处理,引起 bug。

巴扎黑
try:
  # 我们想要的数据在 alist 中
  data = alist[0]
except IndexError:
  # ...但那数据也许并不存在
  data = []
else:
  # 取得了数据,存放在 datalist 的第一位置,取代之前的旧数据
  # 我知道之前一定是有旧数据的,否则这程序有 bug
  datalist[0] = data

随便写的,表达一下意思而已。

ringa_lee

因为有些代码是不论异常有没有发生都要执行的。就和例子里的一样,不论文件是否打开,文件流都必须关闭,不然有可能发生后续访问的时候文件被占用这种很恶心的事情。而且你在捕获不同的异常的时候要是疯狂复制相同的善后代码的话,是违反DRY定理的。更重要的是,就算你没有写对应异常的catch块,else也会被执行,保证了安全性

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号