Python 获取异常(Exception)信息的几种方法

  • Post category:Python

下面开始详细讲解“Python获取异常(Exception)信息的几种方法”的攻略。

1. 什么是Python异常?

在 Python 程序执行过程中,如果发生了错误(错误是指不满足代码逻辑或非法操作等问题),程序会抛出异常(Exception)。当异常被抛出时,程序执行会立即停止。

2. Python异常类型

Python 内置了许多不同类型的异常,包括但不限于以下类型:

  • AssertionError: 表达式为 false 时触发。
  • AttributeError: 对象没有这个属性时触发。
  • EOFError: 没有内建输入,到达 EOF 标记时触发。
  • ImportError: 无法载入模块或包,一般是路径问题。
  • IndexError: 索引超出序列的范围时触发。
  • KeyError: 在映射(字典)中没找到键时触发。
  • KeyboardInterrupt: 用户中断执行(通常是输入^C)。
  • NameError: 尝试访问不存在的变量时触发。
  • NotImplementedError: 抽象方法在派生类中没有实现时触发。
  • OSError: 操作系统产生的异常(例如打开一个不存在的文件)。
  • SyntaxError: Python 语法错误。
  • TypeError: 不同类型间的无效操作。
  • ValueError: 传给函数的参数格式不正确,或者参数值不合法。

在程序开发中,会使用 try…except…语句来捕获异常并对其进行处理。

3. Python获取异常信息的几种方法

Python 中有多种方法来获取异常信息,下面分别介绍。

(1)使用traceback模块

使用 traceback 模块可以获取详细的异常信息,包括异常类型、异常消息和出错位置等。

import traceback

try:
    a = 1 / 0
except Exception as e:
    print(traceback.format_exc())

输出:

Traceback (most recent call last):
  File "/Users/user/Desktop/test.py", line 4, in <module>
    a = 1 / 0
ZeroDivisionError: division by zero

(2)直接获取异常信息

如果只需要获取异常信息的文本消息,可以使用 str(e) 或 repr(e) 直接获取异常信息。

try:
    a = 1 / 0
except Exception as e:
    print(str(e))
    print(repr(e))

输出:

division by zero
ZeroDivisionError('division by zero',)

总结

这就是 Python 中获取异常信息的几种方法。使用 traceback 模块可以获取异常的详细信息,包括异常类型、异常消息和出错位置等;如果只需要获取异常信息的文本消息,可以使用 str(e) 或 repr(e) 直接获取异常信息。在程序开发中,及时获取异常信息并对其进行处理非常重要,可以帮助我们快速定位问题并进行调试。