04.07 python扫盲之七-异常处理

python扫盲之七-异常处理

所谓异常处理,是程序世界里又一个非常常用的代码功能之一,咱们想象一下这样一种场景,你辛辛苦苦编写了几千行代码,发布,上线。但其中某一段代码由于逻辑问题,导致出现报错,程序崩溃了。又或者一段代码中判断的条件可能本身就有可能会引发错误的那么这段逻辑要怎么写 if套用if套用if。。。。

所以python 提供了一个非常牛叉的异常处理函数,来处理python程序在运行中出现的异常和错误。

<code>基本语法/<code>

try:#运行别的代码except:#如果在try部份引发了'name'异常except,:#如果引发了'name'异常,获得附加的数据else:#如果没有异常发生执行这里其中的‘名字’部分,是你想要捕捉的错误代码。例如 fh = open("test.log","r")IOError:[Errno2]No such file or directory:'test.log'这个错误代码就是IOError。

<code>实例/<code>

#!/usr/bin/python# -*- coding: UTF-8 -*-#我们拿上一篇中讲到的open方法来演示一下try: fh = open("test.log","r") fh.read()exceptIOError:print"Error: 没有找到文件或读取文件失败"else:print"读到了内容" fh.close()执行:Error:没有找到文件或读取文件失败输出了这样的结果。如果我们没用使用异常处理呢?#!/usr/bin/python# -*- coding: UTF-8 -*-#我们拿上一篇中讲到的open方法来演示一下fh = open("test.log","r")fh.read()执行Traceback(most recent call last):File"F:/PycharmProjects/untitled3/ddd.py", line 5,in<module> fh = open("test.log","r")IOError:[Errno2]No such file or directory:'test.log'Process finished with exit code 1报错很难看。。/<module>

我们再看一个例子

#!/usr/bin/python# -*- coding: UTF-8 -*-#我们拿上一篇中讲到的open方法来演示一下try: fh = open("test.log","r") fh.read()exceptIOError:print"Error: 没有找到文件或读取文件失败"else:print"读到了内容" fh.close()print'继续执行吧'执行Error:没有找到文件或读取文件失败继续执行吧#不用异常处理呢?#!/usr/bin/python# -*- coding: UTF-8 -*-#我们拿上一篇中讲到的open方法来演示一下fh = open("test.log","r")fh.read()print'继续执行吧'执行Traceback(most recent call last):File"F:/PycharmProjects/untitled3/ddd.py", line 5,in<module> fh = open("test.log","r")IOError:[Errno2]No such file or directory:'test.log'通过上面两段代码的对比可以发现,在使用了异常处理函数的时候,如果报错在我们设定范围内,及时是报错了程序也会继续执行。/<module>

上面几个小例子简单描述了一下异常处理的使用方法。先小小总结一下,异常处理是为了捕获我们提前设定好的错误,来处理或者跳过。

下面说一下它的另一个语法形式

try:finally: #try语句无论是否发生异常都将执行这段代码

这个咱们就不实例讲解了,也非常的简单,有兴趣的童鞋自己试一下

<code>使用场景/<code>

关于异常处理的使用,很多新手程序员可能体会不深,因为你的代码量相对来说少一些,体会不到大型复杂程序报错之后的痛苦。

#看一段代码,假如你在编写一个被用户访问的web接口,你约定了用户需要给你返回的是这样的数据{'k1':1,'k2':2}。现在你需要从里面提取数据。request ={'k1':1,'k2':2}print request['k1']print request['k2']ok 这样子看似没有问题。好了突然有一天,一个用户给你传了这样的数据,{'k1':1,'k3':2},然后你还是按照原来的方式处理request ={'k1':1,'k3':2}print request['k1']print request['k2']这会发生什么?print request['k2']KeyError:'k2'报错。导致你的程序异常退出了。这时候你需要的就是异常处理功能了。我们改写一下request ={'k1':1,'k3':2}try:print request['k1']print request['k2']exceptKeyError,e:print'你大爷,你给我传的数据不对!!'这样处理之后,首先不会导致你的程序因为异常退出。其次这也是一种检验对方给你数据是否正确的方式,当然这只是个例子我们不建议这样来检验数据正确性的。 

关于异常处理,咱们就讲这么多,虽然本博文没有讲解到很深入的东西。但是足够你入门了。入门为主,修行在后。学习要一点一点来。

欢迎加入我们python自学交流群:460146436


分享到:


相關文章: