返回介绍

关于 sys.exc_info

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

sys.exc_info结果在上两个小节中用到,通常允许一个异常处理器获取对最近引发的异常的访问。当使用空的except子句来盲目地捕获每个异常以确定引发了什么的时候,这种方式特别有用:

如果没有处理器正在处理,就返回包含了三个None值的元组。否则,将会返回(type、value和traceback):

·type是正在处理的异常的异常类型。

·value是引发的异常类实例。

·traceback是一个traceback对象,代表异常最初发生时所调用的堆栈(参考标准traceback模块到文档,来获得可以和这个对象共同使用的对象工具,从而可以手动产生出错消息的工具)。

正如我们在前一章中看到的,当捕获异常分类超类的时候,sys.exc_info对于确定特定的异常类型很有用。正如我们所看到的,由于在这种情况下,我们也可以通过as子句所获取的实例的__class__属性来获得异常类型,sys.exc_info如今主要由空的except使用:

也就是说,使用实例对象的接口和多态,往往是比测试异常类型更好的方法——可以为每个类定义异常方法并通用地运行:

通常,在Python中太具体可能会限制代码的灵活性。像这里的最后一个例子的多态方法,通常更好地支持未来的改进。

注意:版本差异提示:在Python 2.6中,旧的工具sys.exc_type和sys.exc_value依然可用于获得最近异常的类型和值,但是只能替整个进程管理单个的全局异常。这两个名称在Python 3.0中已经删除了。新的更倾向于使用的sys.exc_info()调用在Python 2.6和Python 3.0中都可以使用,它记录每个线程的异常信息,因此是线程专有的方式。当然,当你在Python程序中使用多线程时,这种区别才显得重要(这个主题超出了本书范围)。参考其他资料获得更多的细节。

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

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

发布评论

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