| SyntaxError | | 缺少冒号(如if语句后未加冒号)、括号不匹配、缩进错误 | 检查代码语法,确保符合Python规范,修正语法错误 |
| IndentationError | 代码缩进不符合Python规范,导致程序无法正确解析 | | |
| TabError | 混合使用Tab键和空格进行缩进,解释器无法确定缩进级别 | | |
| ZeroDivisionError | 在除法或取模运算中,除数为0(数学上无意义,Python禁止) | 整数/浮点数除法(如5 / 0)、取模运算(如7 % 0) | |
| OverflowError | | | |
| 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)中断程序 | | |
| MemoryError | 程序尝试分配的内存超出系统可用内存,使用了过多的内存资源 | | 优化内存使用,避免创建不必要的大对象,检查并修复内存泄漏问题 |
| AssertionError | assert语句的条件为False,表示程序运行时某些条件未满足预期 | assert语句的条件表达式为False(如assert 1 == 2) | 确保assert语句的条件在程序运行时满足预期,或根据需要调整条件 |