Python 语言-第二章流程控制结构加餐之异常处理

2.4 异常处理

2.4.1 Bug 的常见类型

  • 粗心导致的错误,如:
    • SyntaxError:Python 语法错误
    • 漏了末尾的冒号,如 if 语句、循环语句、else 子句等等
    • 缩进错误
    • 英文符号写成了中文符号,比如冒号、引号、括号
    • 字符拼接时,把字符串和数字进行了拼接
    • 没有定义变量,比如 while 循环条件的变量
    • "=="比较运算符与"="赋值运算符混用
  • 知识不熟练导致的错误,如:
    • IndexError:索引越界错误
    • 使用 append() 方法时
  • 思路不清晰导致的错误,如:
    • for 循环进行嵌套
    • 解决方法:
      • 多使用 print() 函数
      • 使用注释理清思路
  • 被动掉坑:程序逻辑没有问题,因为用户操作或者一些”例外情况“导致程序出现问题,如:
    • 输入的被除数为 0
    • 解决方法:
      • 使用 python 的异常处理机制,在出现异常时捕获异常,”内部消化“,让程序继续运行

2.4.2 python 的异常处理机制

2.4.2.1 try - except 语句

  • 作用: 捕获程序在执行时遇到的异常情况,即一些报错。
  • 意义: 因为程序在发现某个错误时,往往会中断不再向下执行。
  • 代码的执行过程:
    • 先执行 try 代码块, 发现了错误。就执行 except 代码块 向下执行
      image-20220116212418703

2.4.2.2 多个 except 结构

  • 代码的执行过程:
    • 如果执行到 except 代码块会按照先子类后父类的顺序
    • 为了避免遗漏可能出现的异常,可以在最后增加 BaseException
  • 例如:
    image-20220116213133640

2.4.2.3 try-except-else 结构

  • 代码执行过程:
    • 如果 try 语句块中没有抛出异常,则执行 else 语句块,如果 try 语句块抛出异常,则执行 except 语句块
  • 例如:
    image-20220116213549970

2.4.2.4 try-except-else-finally结构

  • 代码执行过程:

    • finally 语句块无论是否发生异常都会被执行
      image-20220116214013167
  • 能常用来释放 try 语句块中申请的资源

  • 例如:
    image-20220116213940131

2.4.2.5 traceback模块

  • 异常信息:报错时,Charm 下面的红色部分就是异常信息
    image-20220116214725390
  • traceback 模块的作用:打印异常信息
    • 因为有时候时需要我们将异常信息写入日志文件,所以需要用到这个模块

2.4.3 python 常见的异常类型

  • 异常类型 描述
    Zero Division Error 在除法(取模运算)中以 0 作为除数
    IndexError 序列中没有此索引
    KeyError 映射中没有这个键
    NameError 未声明/初始化对象(没有对象)
    SyntaxError Python语法错误
    ValueError 传入无效参数
    TypeError 对类型操作无效操作
    ImportError 导入模块/对象失败
posted @ 2022-01-16 21:55  你是我的生命之源  阅读(110)  评论(0)    收藏  举报
页脚