流媒体调试必备!这款免装 M3U8 在线播放器,建议永久收藏
2026/8/5 13:18:32
s = 1 i = 5 result = s + i print(result)#缩进错误if s > i: print('123') else: print('0000')with codecs.open('./binary_data.bin',mode='rb',encoding=None) as file: binary_data = file.read() print(binary_data)s = "hello" i = 5 #can only concatenate str (not"int") to str result = s + i print(result)程序没有按照预期的流程执行,条件判断不正确
无效的输入、输入的数据类型不正确等
my_list = [1,2,3] print(my_list[4])try: #可能引发异常的代码 except ExceptionType: #处理该异常的代码 else: #没有异常发生时执行的代码try: #尝试执行代码 except ExceptionType: #当异常发生时执行的代码 finally: #无论是否发生异常都会执行的代码def divide_numbers(dividend,divisor):#接受两个参数 try: result = dividend / divisor#使用try块进行除法操作 print("The result is:",result)#将结果储存在变量result中 except ZeroDivisionError: print("Error:Division by zero is not allowed.")#如果除数为0,将引发ZeroDivisionError异常 finally: print("This is the finally block.") #调用函数并传入参数 divide_numbers(10,2) divide_numbers(10,0)try: #可能引发异常的代码 x = 1 / 0 except Exception as e: #处理Exception异常 print("Error:",str(e)) raise #手动引发异常以下表格汇总了 Python 编程中常见的异常类型、触发场景及典型示例,便于快速查阅和诊断。
| 异常类型 | 触发场景 | 典型示例 | 处理建议 |
|---|---|---|---|
| SyntaxError | 代码不符合 Python 语法规则 | print('hello' # 缺少右括号 | 检查括号、引号、冒号等语法符号是否配对 |
| IndentationError | 缩进不正确(属于 SyntaxError 子类) | | 统一使用空格或制表符,保持同一代码块缩进一致 |
| NameError | 引用未定义的变量、函数或模块 | print(undefined_var) | 检查变量名拼写,确认变量是否在作用域内定义 |
| TypeError | 操作或函数应用于不兼容类型的对象 | 'hello' + 123 | 检查操作数类型,必要时使用类型转换(如str()、int()) |
| ValueError | 传入参数类型正确但值不合法 | int('abc') | 验证输入数据的有效性,使用try-except捕获并提示 |
| IndexError | 序列(列表、元组、字符串)索引超出范围 | lst = [1,2,3]; print(lst[5]) | 访问前检查序列长度,使用len()判断边界 |
| KeyError | 字典中访问不存在的键 | d = {'a':1}; print(d['b']) | 使用dict.get(key, default)或先检查key in dict |
| FileNotFoundError | 尝试打开不存在的文件 | open('missing.txt', 'r') | 检查文件路径是否正确,或使用os.path.exists()预先判断 |
| ZeroDivisionError | 除法或取模运算中除数为零 | 10 / 0 | 对除数进行非零校验,或使用try-except捕获 |
| AttributeError | 对象没有指定的属性或方法 | lst = [1,2]; lst.appendd(3) | 检查属性/方法名拼写,确认对象类型是否支持该操作 |
| ImportError / ModuleNotFoundError | 导入模块失败(模块不存在或路径问题) | import non_existent_module | 检查模块名拼写、安装情况以及 Python 路径(sys.path) |
| KeyboardInterrupt | 用户按下中断键(如 Ctrl+C) | 在循环或输入等待时按下 Ctrl+C | 通常用于优雅退出,可在try-except中清理资源 |
| MemoryError | 内存不足,无法分配所需对象 | 创建超大型列表或递归过深 | 优化数据结构,使用生成器、分块处理,或增加系统内存 |
| OverflowError | 数值运算结果超出类型表示范围 | import math; math.exp(1000) | 使用更高精度的数据类型(如decimal.Decimal)或检查运算边界 |
扩展说明:
BaseException或Exception,可通过try-except捕获。Exception类,以便与内置异常保持一致的捕获机制。except Exception as e:可捕获所有非系统退出的异常,但建议根据具体场景捕获特定异常。logging模块)和详细的错误信息能大幅提升调试效率。