通常状况下,变量是在定义以后才能进行调用的,这里咱们示范一个错误,并对这个异常进行处理。代码以下所示:python
运行后,报错信息以下:单元测试
咱们能够发现,报错信息提示:变量 a 未定义,因此在引用时才会报错。学习
若是咱们不想代码运行到这里中止运行或者不想看到这个错误,就可使用try ... except 语句来捕获这个错误,告诉python程序,若是遇到这个错误,该怎么处理,代码以下:测试
运行后的结果是:spa
try ... except ... 就可让python代码中遇到的问题直接抓到,并进行处理,而后让程序得以继续运行。3d
在讲带有错误类型的 try ... except ... 代码块以前,咱们先来了解一下常见的错误类型,以便咱们更好的理解后面的内容。日志
常见的错误类型:对象
1)带有万能错误基类的代码blog
在上面咱们已经了解了python中常见的错误类型,可是若是做为新手的你不是很肯定错误的类型,就可使用万能的错误基类来编写代码。索引
咱们还使用上面打印一个未定义变量的例子来进行演示和说明,具体的代码以下:
运行代码后,结果以下:
2)带有对应错误类型的代码
仍是使用 a 变量未定义的例子来进行说明,咱们采用NameError来捕捉异常,并进行处理,具体的代码以下:
这里except后面跟的是指定的对应错误基类,咱们捕捉到的错误,并将错误存储到变量e里面,在except下面的代码中对错误内容e进行输出,运行代码后,获得的结果是:
3)在同一个代码块中处理多种错误类型
这里咱们举两个例子来讲明使用try..except...语句来在一个代码块中处理多种错误类型,代码以下:
运行后的结果是:
咱们能够看到程序抛出的是IndexError错误,此时咱们将IndexError错误进行解决后,再继续运行代码,运行结果是:
咱们用比较简单易懂的语言来描述 try ... except ... finally 的用法,咱们能够这么说:
try:下面放你须要监控的代码
except:处理捕捉到的错误异常
finally:无论try下面的代码是否遇到异常,finally下面的代码必定会执行
咱们举一个比较经常使用的例子来讲明 try ... except ... finally 的具体用法:
这个就是打开一个文件,读取文件,若是文件损坏等致使没法正常打开、读取时,会抛出异常,可是不管是否打开成功、读取成功最后都会关闭文件,这也是 try ... except ... finally 最经常使用的场景。
raise的做用就是主动把异常处理中的错误抛出来,让咱们看到 traceback 信息,通常都是在咱们处理完异常信息后,再将错误抛出,在后期的单元测试中生成测试报告用的比较多。
示范代码以下:
运行后的结果以下所示:
运行后咱们能够发现,虽然已经处理了错误,可是仍是跑出了traceback信息。
有这么一种场景,在咱们的程序运行过程当中,若是发生了比较严重的错误,除了写入日志以外,咱们还须要当即通知项目负责人进行处理,而当程序遇到通常的错误时,则只须要写入日志就能够了。而这些比较严重的错误可能不止一种,此时咱们就须要将异常进行分组,将须要进行统一处理的异常写在一块儿,方便更好的管理。
示范代码以下:
运行后的结果是:
怀揣但愿去努力,静待美好的出现。