当前位置:首页>python>Python内置错误类型速查表

Python内置错误类型速查表

  • 2026-10-21 13:29:15
Python内置错误类型速查表
错误类型
中文解释
典型场景
解决思路
SyntaxError
代码不符合Python语法规则,程序无法启动
缺少冒号(如if语句后未加冒号)、括号不匹配、缩进错误
检查代码语法,确保符合Python规范,修正语法错误
IndentationError
代码缩进不符合Python规范,导致程序无法正确解析
混用Tab键和空格、缩进级别不一致
统一使用空格或Tab键进行缩进,确保缩进级别一致
TabError
混合使用Tab键和空格进行缩进,解释器无法确定缩进级别
在同一个代码块中混合使用Tab键和空格
统一缩进方式,避免混合使用Tab键和空格
ZeroDivisionError
在除法或取模运算中,除数为0(数学上无意义,Python禁止)
整数/浮点数除法(如5 / 0)、取模运算(如7 % 0)
确保除数不为0,检查除法或取模运算中的除数
OverflowError
算术运算结果超出Python能够表示的最大范围
某些浮点数运算(如math.exp(1000))
检查运算输入,避免结果超出Python的表示范围
FloatingPointError
浮点运算无法得到确定结果(目前Python中较少直接引发)
浮点运算中的精度丢失问题
了解浮点运算特性,必要时使用十进制模块处理精度问题
IndexError
尝试访问序列(列表、元组、字符串)中不存在的索引
列表索引越界(如lst = [1,2,3],访问lst[3])、空序列访问索引
确保索引在序列范围内,检查索引值是否正确
KeyError
尝试访问字典中不存在的键
字典中没有对应键(如dic["age"])、键名拼写错误(如dic["Name"])
确保键存在于字典中,检查键名拼写是否正确
TypeError
操作或函数应用于不适当类型的对象
字符串与整数相加(如"123" + 456)、错误类型参数调用函数(如len(123))
确保操作或函数的参数类型正确,显式转换类型(如int("5") + 3)
ValueError
操作或函数接收到类型正确但值无效的参数
非数字字符串转换为整数(如int("abc"))、无效函数参数(如math.sqrt(-1))
确保参数值有效,检查输入是否符合函数或操作的要求
UnicodeError
与Unicode编码/解码相关的错误,字符串无法正确编码或解码
非ASCII字符使用ASCII编码(如text.encode('ascii'))
使用正确的编码方式处理字符串,确保编码与解码一致
AttributeError
尝试访问对象不存在的属性或方法
调用不存在的方法(如"hello".append("a"))、访问不存在的属性(如"test".length)
确保对象拥有所需的属性或方法,检查属性名或方法名拼写是否正确
ImportError
尝试加载模块遇到麻烦,模块不存在或无法导入指定名称
导入不存在的模块(如import nonexistent_module)、导入不存在的名称
确保模块存在,检查导入语句中的名称是否正确
ModuleNotFoundError
Python无法找到指定的模块,通常由于未安装或路径错误
未安装第三方库(如import requests但未安装)、模块路径错误
安装所需的第三方库,确保模块路径正确
RuntimeError
发生不属于其他特定异常类型的运行时错误,程序遇到未预期的情况
未预期的错误条件、第三方库或自定义代码引发的通用错误
检查程序逻辑,排查未预期的错误条件
NotImplementedError
抽象基类的方法在子类中未实现,提示子类必须实现某些方法
抽象基类方法未被重写
在子类中实现抽象基类的方法
RecursionError
递归调用深度超过Python默认限制(默认1000次),通常由无限递归引起
递归函数没有终止条件、递归次数超过默认限制
确保递归函数有正确的终止条件,避免无限递归
FileNotFoundError
尝试打开不存在的文件或目录
文件路径错误(如open("data/test.txt"))、文件名拼写错误
确保文件存在,检查文件路径和文件名拼写是否正确
PermissionError
尝试进行没有足够权限的操作,如读取受保护文件或写入只读目录
读取受保护文件(如/etc/shadow)、写入只读文件或目录
确保有足够的权限进行操作,检查文件或目录的权限设置
IsADirectoryError
尝试对目录执行仅适用于文件的操作,如打开目录作为文件读取
使用open()函数打开目录(如open("/home"))
确保操作对象是文件,而不是目录
NotADirectoryError
尝试对文件执行仅适用于目录的操作,如列出文件的内容
对文件执行目录操作(如os.listdir("file.txt"))
确保操作对象是目录,而不是文件
NameError
尝试访问未定义的变量、函数或类,通常由于变量未赋值或作用域问题
打印未赋值的变量(如print(x)x未赋值)、调用未定义的函数
确保变量或函数已定义,检查作用域是否正确
KeyboardInterrupt
用户按下中断键(通常是Ctrl+C或Delete)中断程序
用户在终端中按下Ctrl+C中断程序
合理处理键盘中断,确保程序能够优雅退出并清理资源
MemoryError
程序尝试分配的内存超出系统可用内存,使用了过多的内存资源
程序创建大量大对象(如大型列表、字典)、内存泄漏
优化内存使用,避免创建不必要的大对象,检查并修复内存泄漏问题
AssertionErrorassert
语句的条件为False,表示程序运行时某些条件未满足预期
assert
语句的条件表达式为False(如assert 1 == 2)
确保assert语句的条件在程序运行时满足预期,或根据需要调整条件

最新文章

随机文章