栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python-我应该总是在`except`语句中指定异常类型吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-我应该总是在`except`语句中指定异常类型吗?

指定一个显式异常类型几乎总是更好。如果使用裸except:子句,则最终可能会捕获到你期望捕获的异常以外的异常-这可能会隐藏错误或使程序无法按预期运行时更难以调试。

例如,如果要在数据库中插入行,则可能需要捕获一个异常,该异常表明该行已存在,因此可以进行更新。

try:    insert(connection, data)except:    update(connection, data)

如果指定了指标裸机except:,则还将捕获一个套接字错误,该错误指示数据库服务器已倒塌。最好只捕获你知道如何处理的异常-程序在异常发生时失败通常比继续执行但以奇怪的意外方式执行更好。

你可能希望使用裸机的一种情况except:是始终需要运行的程序的顶层,例如网络服务器。但是随后,你需要非常小心地记录异常,否则将无法找出问题所在。基本上,执行此操作的程序中最多只能有一个位置。

其推论这一切是你的代码不应该这样做

raise Exception('some message')
,因为它迫使客户端代码使用except:(或
except Exception
:这是几乎一样糟糕)。你应该定义一个特定于你要发信号的问题的异常(也许从某些内置的异常子类(如
ValueError
TypeError
)继承)。或者,你应该引发特定的内置异常。这使你的代码用户可以小心地捕获他们想要处理的异常。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431796.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号