返回介绍

基于类的异常

发布于 2024-01-29 22:24:14 字数 699 浏览 0 评论 0 收藏 0

字符串是定义异常的简单方式。然而,就像前边描述的一样,类多了一些优点。最主要的是,类可让你组织的异常分类,比起简单的字符串而言,使用和维护起来更灵活。再者,类可附加异常的细节,而且支持继承。因为类是更好的办法,很快也会变成规定的做法。

先不管编写代码的细节,字符串异常和类异常的主要差别在于,引发的异常在try语句中的except子句匹配时的方式不同。

·字符串异常是以简单对象识别来匹配的:引发的异常是由Python的i s测试来匹配except子句的。

·类异常是由超类关系进行匹配的:只要except子句列举了异常的类或其任何超类名,引发的异常就会匹配该子句。

也就是说,当try语句的except子句列出一个超类时,就可以捕捉该超类的实例,以及类树中所有较低位置的子类的实例。结果就是,类异常支持异常层次的架构:超类变成分类的名称,而子类变成这个分类中特定种类的异常。except子句列出一个通用的异常超类,就可捕捉整个分类中的各种异常:任何特定的子类都可匹配。

字符串异常没有这样的概念:因为它们都通过简单对象标识来匹配,所以它们没有直接的方式来把异常组织到更为灵活的领域或分组。直接的结果是,异常处理器以一种难以做出修改的方式与异常集合匹配。

除了这种类型想法外,基于类的异常也更好地支持了异常状态信息(附加在实例上),而且可以让异常参与继承层次(从而获得通用的行为)。由于它们提供类和OOP一般性的所有优点,比起现在废弃了的基于字符串的异常来说,它们提供一种更为强大的替代方案,而只需要一点点额外的代码。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文