小甲鱼Python学习笔记

课程主题

  • 讲师:小甲鱼
  • 内容:Python 异常基础——认识常见异常类型
  • 核心观点:程序出错不可避免,需用异常机制处理;永远不要相信用户输入

异常的本质

  • 定义:程序运行时出现的逻辑错误用户输入不合法导致的报错
  • 特点:非致命错误可通过异常机制自我消化,避免程序崩溃
  • 示例:打开不存在的文件 → 触发FileNotFoundError(属于OSError子类)

Python 常见异常类型及说明

  1. AssertionError
    • 触发场景:assert断言语句后条件为False时抛出
    • 作用:作为代码检测点,验证程序运行状态
    • 示例:assert len(my_list) > 0 → 列表为空时触发异常
  2. AttributeError
    • 触发场景:尝试访问对象不存在的属性/方法
    • 示例:my_list.fishc() → 列表无fishc方法,触发异常
  3. IndexError
    • 触发场景:序列(列表/字符串)索引超出范围
    • 示例:my_list = [1,2,3]; my_list[3] → 最大索引为2,触发异常
  4. KeyError
    • 触发场景:字典中查找不存在的键
    • 示例:my_dict = {1:"one"}; my_dict[4] → 键4不存在,触发异常
    • 解决技巧:用字典get()方法,避免报错
  5. NameError
    • 触发场景:尝试访问未定义的变量
    • 示例:print(fishc) → 变量fishc未定义,触发异常
  6. OSError
    • 触发场景:操作系统相关错误,包含多个子类
    • 常见子类:FileNotFoundError(文件不存在)
    • 示例:open("test.txt") → 文件不存在时触发
  7. OverflowError
    • 触发场景:数值运算超出系统最大限制
    • 注意:Python 支持大整数,此异常极少出现
  8. SyntaxError
    • 触发场景:代码语法错误(如少括号、关键字写错)
    • 特点:编译阶段就报错,程序无法运行
    • 示例:print "hello" → Python3 中print是函数,需加括号
  9. TypeError
    • 触发场景:不同类型数据执行无效操作
    • 示例:1 + "1" → 整型与字符串无法相加,触发异常
  10. ZeroDivisionError
    • 触发场景:除法运算中除数为 0
    • 示例:5 / 0 → 直接触发异常

异常相关关键注意点

  • 异常无需死记:遇到时查询即可,重点是学会处理
  • 语法错误(SyntaxError)无法通过异常机制处理,必须修正代码
  • 用户输入是异常高发区:需假设用户是"熊孩子/黑客",做好输入校验