登录
首页 >  文章 >  python教程

在except块中使用sys.exc_info()获取异常信息

时间:2026-02-04 19:57:37 426浏览 收藏

哈喽!今天心血来潮给大家带来了《在 except 块中,可以通过 sys.exc_info() 获取当前正在抛出的异常对象,而不需要使用 as e 语法。例如:import sys try: # 可能会引发异常的代码 1 / 0 except: exc_type, exc_obj, exc_tb = sys.exc_info() print("异常类型:", exc_type) print("异常对象:", exc_obj)这种方法可以在不使用 as e 的情况下获取异常信息。》,想必大家应该对文章都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习文章,千万别错过这篇文章~希望能帮助到你!

在 except 块中不使用 as e 时,可通过 sys.exc_info()[1] 获取当前异常对象;该函数仅在异常处理上下文中有效,返回三元组中的 value 即异常实例。

except 块里如何获取当前正在抛出的异常对象(不写 as e)

在 Python 的 except 块中,如果不使用 as e 绑定异常对象,仍然可以通过标准库模块 sys 获取当前正在处理的异常对象。

使用 sys.exc_info()

sys.exc_info() 返回一个三元组 (type, value, traceback)

  • type:异常类(如 ValueError
  • value:异常实例(即你通常写 as e 得到的那个对象)
  • traceback:异常的回溯对象(types.TracebackType

其中 value 就是你要的“当前正在抛出的异常对象”。注意:该函数**只在异常处理上下文中有效**(即在 exceptfinally 块内,且当前有未处理完的异常时)。

示例代码

✅ 正确用法(在 except 内调用):

import sys
<p>try:
1 / 0
except:
exc_type, exc_value, exc_tb = sys.exc_info()
print(f"异常类型:{exc_type.<strong>name</strong>}")
print(f"异常值:{exc_value}")  # ← 这就是不写 <code>as e</code> 时拿到的异常对象
print(f"异常信息:{str(exc_value)}")
</p>

注意事项

  • 不能在 except 外调用 sys.exc_info(),否则返回 (None, None, None)
  • 如果在 except 中又抛出了新异常,旧异常信息会被覆盖(除非显式保存)
  • 推荐仅在需要动态处理异常类型/值、或封装通用错误处理逻辑时使用;日常编码中 except Exception as e 更清晰安全

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>