Python异常捕获与处理

1、任务描述

  本实验任务主要对Python异常进行一些基本操做,经过完成本实验任务,要求学生熟练掌握Python异常的基本操做。并对异常的基本操做进行整理并填写工做任务报告。python

2、任务目标

一、掌握Python异常的捕获程序员

二、掌握Python异常的处理数据库

3、任务环境

Ubuntu16.0四、Python2.7vim

4、任务分析

  异常便是一个事件,该事件会在程序执行过程当中发生,影响了程序的正常执行。spa

  通常状况下,在Python没法正常处理程序时就会发生一个异常。操作系统

  异常是Python对象,表示一个错误。对象

  当Python脚本发生异常时咱们须要捕获处理它,不然程序会终止执行。事件

5、任务实施

步骤一、环境准备资源

  右击Ubuntu操做系统桌面,从弹出菜单中选择【Open in Terminal】命令打开终端。io

  经过【cd /home】切换到home目录下。【ls】查看该目录下的全部内容。

 

图1 切换目录

  【mkdir except】在home目录下建立except文件夹。

图2 建立文件夹

步骤二、捕捉异常

  【cd except】切换到except目录下,【vim except1.py】回车后建立并编辑名为except1的Python文件

图3 建立Python文件

  回车后进入编辑框内,按键盘【i】进入编辑状态,输入以下程序。

  分别获取用户输入的x与y值,并进行除法运算。

图4 编辑Python文件

  编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框,【python except1.py】执行except1的Python文件。

  分别输入第一个数字6,第二个数字0。回车后报ZeroDivisionError异常,该异常在除法或者模除操做的第二个参数为0时引起。

图5 运行Python文件

  再次进入except1.py文件编辑状态,修改程序。

图6 编辑Python文件

  再次运行except1.py程序。再次输入第一个数字6,第二个数字0。回车后不报异常,并将except后的打印语句输出。根据结果证实try/except将异常捕捉并处理

图7 运行Python文件

  若是用户在提示符后面输入非数字类型的值,就会产生另一个异常。

  运行except1.py程序,输入第一个数字6,第二个值为’shiyanbar’,回车后报TypeError异常。

图8 运行Python文件

  由于except子句只寻找ZeroDivisionError异常,此次的错误就溜过了检查并致使程序终止。

  捕捉这个异常,能够直接在同一个try/except语句后面加上另外一个except字句。

  再次进入except1.py文件编辑状态,修改程序。

图9 编辑Python文件

  再次运行except1.py程序。再次输入第一个数字6,第二个值为’shiyanbar’。回车后不报异常,并将except后的打印语句输出。

图10 运行Python文件

  固然这种解决办法能够捕获异常,但产生的问题是程序中会增长一大堆可能错误状况的except,会让代码至关的难读。

  若是须要用一个块解决多个类型异常,能够将它们做为元组列出。

  再次进入except1.py文件编辑状态,修改程序便可。

图11 编辑Python文件

  若是想让程序继续运行,可是又由于某种缘由想记录下错误。

  再次进入except1.py文件编辑状态,修改程序。程序会打印异常,而且程序会继续运行。

图12 运行Python文件

  再次运行except1.py程序。再次输入第一个数字6,第二个值为0。回车后不报异常,并将异常的信息输出。

图13 运行Python文件

  就算程序中能处理好几种类型的异常,但有些异常仍是会从眼皮下溜走。

  再次运行except1.py程序。再次输入第一个数字6,第二个值为空。回车后报SyntaxError异常。

图14 运行Python文件

  能够用一段代码捕捉全部异常,能够在except子句中忽略全部的异常类。

  再次进入except1.py文件编辑状态,修改程序。

  像这样捕捉全部的异常是危险的,由于会隐藏程序员未想到而且未作好准备处理的错误等。这时使用except Exception,e会更好些。

图15 运行Python文件

  在有些状况中,没有异常发生执行一段代码是颇有用的,能够像对条件和循环语句那样,给try/except添加个else字句。

  再次进入except1.py文件编辑状态,修改程序。

  这里的循环只在没有异常发生引起的状况下才会退出(由else字句中的break语句退出),只要有错误发生,程序会不断要求从新输入,并将异常信息打印。

图16 编辑Python文件

  再次运行except1.py程序。

  再次输入第一个数字6,第二个值为0。回车后报’integer division or modulo by zero’异常。

  再次输入第一个数字6,第二个值为’shiyanbar’,回车后报’unsupported operand type(s) for /: ‘int’ and ‘str’’。

  再次输入第一个数字6,第二个值为3,获得除结果。

图17 运行Python文件

  最后,finally字句能够用来在可能的异常后进行清理,和try联合使用。

  经过【vim except2.py】建立并编辑名为except2的Python文件。编辑以下代码。

  在程序中,finally字句确定会被执行,无论try字句中是否发生异常。

图18 编辑Python文件

  【python except2.py】运行python文件,在程序崩溃以前,对于变量x的清理完成。

  由于使用del语句删除一个变量是很是不负责的清理手段,全部finally子句用于关闭文件或关闭因系统错误而没法正常释放的资源。好比文件关闭,释放锁,把数据库链接返还给链接池等

图19 运行Python文件
相关文章
相关标签/搜索