python之异常处理

  在介绍异常处理以前,咱们先简单的介绍一下什么是python异常,以便于咱们理解python中的异常处理。

  python异常,就是python代码在运行期间发生的错误,每当发生错误的时候,若是你编写了处理该异常的代码,程序将继续运行;若是你未对异常进行处理,程序将中止,并显示一个traceback,其中包含有关异常的报告。

  python中的异常是使用try-except代码块处理的。try-except代码块让python执行指定的操做,同时告诉python发生异常时该怎么办。使用了try-except代码块时,即使发生异常,程序也将继续运行,而且显示预先编写在except中的处理信息,而不是让人摸不着头脑的traceback消息。下面咱们就来学习python的异常处理。

一、try...except 的简单使用

通常状况下,变量是在定义以后才能进行调用的,这里咱们示范一个错误,并对这个异常进行处理。代码以下所示:python

 运行后,报错信息以下:单元测试

 咱们能够发现,报错信息提示:变量 a 未定义,因此在引用时才会报错。学习

若是咱们不想代码运行到这里中止运行或者不想看到这个错误,就可使用try ... except 语句来捕获这个错误,告诉python程序,若是遇到这个错误,该怎么处理,代码以下:测试

 运行后的结果是:spa

 try ... except ... 就可让python代码中遇到的问题直接抓到,并进行处理,而后让程序得以继续运行。3d

二、带有错误类型的 try ... except ... 代码块

在讲带有错误类型的 try ... except ... 代码块以前,咱们先来了解一下常见的错误类型,以便咱们更好的理解后面的内容。日志

常见的错误类型:对象

  • ImportError:没法引入模块或包
  • IndexError:下标索引超出序列边界
  • NameError:使用一个还未赋予对象的变量
  • SyntaxError:代码逻辑语法错误,不能执行,不能去捕获
  • TypeError:传入的对象类型与要求不符
  • ValueError:传入一个不被指望的值,即便类型正确
  • KeyError:试图访问字典里不存在的键
  • IOError:输入输出异常,文件操做

1)带有万能错误基类的代码blog

在上面咱们已经了解了python中常见的错误类型,可是若是做为新手的你不是很肯定错误的类型,就可使用万能的错误基类来编写代码。索引

咱们还使用上面打印一个未定义变量的例子来进行演示和说明,具体的代码以下:

 运行代码后,结果以下:

 2)带有对应错误类型的代码

仍是使用 a 变量未定义的例子来进行说明,咱们采用NameError来捕捉异常,并进行处理,具体的代码以下:

 这里except后面跟的是指定的对应错误基类,咱们捕捉到的错误,并将错误存储到变量e里面,在except下面的代码中对错误内容e进行输出,运行代码后,获得的结果是:

 3)在同一个代码块中处理多种错误类型

这里咱们举两个例子来讲明使用try..except...语句来在一个代码块中处理多种错误类型,代码以下:

 运行后的结果是:

 咱们能够看到程序抛出的是IndexError错误,此时咱们将IndexError错误进行解决后,再继续运行代码,运行结果是:

 三、try...except...finally 代码块

咱们用比较简单易懂的语言来描述 try ... except ... finally 的用法,咱们能够这么说:

try:下面放你须要监控的代码

except:处理捕捉到的错误异常

finally:无论try下面的代码是否遇到异常,finally下面的代码必定会执行

咱们举一个比较经常使用的例子来讲明 try ... except ... finally 的具体用法:

 这个就是打开一个文件,读取文件,若是文件损坏等致使没法正常打开、读取时,会抛出异常,可是不管是否打开成功、读取成功最后都会关闭文件,这也是 try ... except ... finally 最经常使用的场景。

 四、raise

  raise的做用就是主动把异常处理中的错误抛出来,让咱们看到 traceback 信息,通常都是在咱们处理完异常信息后,再将错误抛出,在后期的单元测试中生成测试报告用的比较多。

示范代码以下:

 运行后的结果以下所示:

 运行后咱们能够发现,虽然已经处理了错误,可是仍是跑出了traceback信息。

五、异常的分组处理

  有这么一种场景,在咱们的程序运行过程当中,若是发生了比较严重的错误,除了写入日志以外,咱们还须要当即通知项目负责人进行处理,而当程序遇到通常的错误时,则只须要写入日志就能够了。而这些比较严重的错误可能不止一种,此时咱们就须要将异常进行分组,将须要进行统一处理的异常写在一块儿,方便更好的管理。

示范代码以下:

 

 运行后的结果是:

 

 

怀揣但愿去努力,静待美好的出现。

相关文章
相关标签/搜索