设为首页 加入收藏

TOP

day7异常处理(一)
2017-09-30 17:28:15 】 浏览:2851
Tags:day7 异常 处理

异常处理

下面看一个简单例子:

data = {}

try:
    data["name"]
except KeyError as e:   #e是错误的相信信息,错误的原因
    print("没有这个key",e)
运行结果如下:
没有这个key 'name'

    从上面结果可以看出,当出现错误的时候,我们可以使用try.....except来规避错误,不让程序报错。能够继续运行。其中as e是错误的明细,原因。

    多种错误扑捉的方法:(1)

data = {}

try:
    data["name"]
except KeyError as e:   #e是错误的相信信息,错误的原因
    print("没有这个key",e)
except IndexError as e:
    print("列表索引错误",e)

    多种错误扑捉方法:(2)  

data = {}
names = []
try:
    names[1]
except (IndexError,KeyError) as e:   #e是错误的相信信息,错误的原因
    print("列表索引错误",e)

    把多种错误原因放到元素中,自动查找术语那种错误。

    Exception抓取基本上所有的错误,一般情况下不建议使用,使用的话放在最后,上面的错误都抓取不到的时候,就最后抓取一次。

异常

    try:

    code

  except (Error1,Error2) as e:

    print(e)

    except Exception:抓取所有错误,一般不建议使用,使用放在最后一次抓取上。如下:

data = {}
names = []
num = 1
try:
    num/0
except (IndexError,KeyError) as e:   #e是错误的相信信息,错误的原因
    print("列表索引错误",e)

except FileNotFoundError as e:
    print("文件不存在",e)

except Exception as e:
    print("未知错误",e)
运行结果如下:
未知错误 division by zero

    上面代码中,except Exception就是用来处理上面所有的情况都抓取不到错误的时候执行的。经常就是所有努力都失败了才执行。

    下面来看一下单元测试,我们经常会测试代码,如果出错了执行错误,如果没有出错,告诉我们没有问题,如下,代码测试:

data = {}
names = []
num = 1
try:
    num/0
except (IndexError,KeyError) as e:   #e是错误的相信信息,错误的原因
    print("列表索引错误",e)

except FileNotFoundError as e:
    print("文件不存在",e)

except Exception as e:
    print("未知错误",e)

else:
    print("一切OK")
运行结果如下:
未知错误 division by zero

    上面代码中,我们知道1/0肯定是会报错的,因为会执行最后一个错误。但是else语句会执行吗?可以从运行结果看没有执行,那么我们来看下正确的情况下:

data = {}
names = []
num = 1
try:
    num/1
except (IndexError,KeyError) as e:   #e是错误的相信信息,错误的原因
    print("列表索引错误",e)

except FileNotFoundError as e:
    print("文件不存在",e)

except Exception as e:
    print("未知错误",e)

else:
    print("一切OK")
运行结果如下:
一切OK

    从代码的运行结果可以看出,当没有错误的时候,执行了else语句,由此我们可以看出,当程序执行遇到错误的时候执行错误,不会执行else语句,当程序运行正常的时候,会执行else语句,告诉我们程序没有出现异常错误。这种情况常用在测试上,错误返回错误,正常返回正常。

    下面来看下无论是否出错都执行的,finally:

    没有异常的时候:

data = {}
names = []
num = 1
try:
    num/1
except (IndexError,KeyError) as e:   #e是错误的相信信息,错误的原因
    print("列表索引错误",e)

except FileNotFoundError as e:
    print("文件不存在",e)

except Exception as e:
    print("未知错误",e)

else:
    print("一切OK")

finally:
    print("不管有没有错,都执行!!!")
运行结果如下:
一切OK
不管有没有错,都执行!!!

    上面可以看出,代码没有异常的时候执行了finally语句。

    下面来看下,代码正常的时候的情况:

 

data = {}
names = []
num = 1
try:
    num/0
except (IndexError,KeyError) as e:   #e是错误的相信信息,错误的原因
    print("列表索引错误",e)

except FileNotFoundError as e:
    print("文件不存在",e)

except Exception as e:
    print("未知错误",e)

else:
    print("一切OK")

finally:
    print("不管有没有错,都执行!!!")
运行结果如下:
未知错误 division by zero
不管有没有错,都执行!!!

 

    从上面运行结果可以看出,当错误的时候,else语句没有执行,但是finally语句继续执行。说明无论什么样的情况下,finally语句都会正常执行。

    python中的异常种类非常多,每个异常专门用于处理某一项异常!!!

    AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇学习了list,试写一段购物车程序 下一篇PYTHON 函数局部变量和全局变量

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目