前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python中认识异常,合理利用异常

python中认识异常,合理利用异常

作者头像
刘金玉编程
发布2019-09-17 17:17:08
6730
发布2019-09-17 17:17:08
举报
文章被收录于专栏:编程创造城市编程创造城市

一、知识回顾:

上一节,我们讲了生成器,我们先来回顾一下生成器的使用。

生成器:yield使得函数冻结且提交一个值。

每次使用生成器,我们以前都使用了for循环,实际上使用的是next函数来进行下一次迭代。

总结得出,我们使用的生成器依赖于一个函数。

所谓递归生成器,实则是在生成器中,再次调用生成器。

上一次我们没有实测next函数调用的问题,以下进行补充。

补充next函数:

作用:主要是用来返回下一次迭代器的返回值。

使用方法:next(迭代器,[默认值])

如果直接使用两次调用自定义迭代器函数的方式,将返回的是每一次迭代器的初始位置的值,也就是说,指针总是指向的是初始的位置。

我们应该把自定义的迭代器赋值给一个变量,然后再使用next函数对这个变量进行下一次迭代。

举例:

#使用变量来表示一个实际的生成器对象

scq=shengChengqi()

print(next(scq))

print(next(scq))


本节知识视频教程

二、异常概述

提问:什么是异常?

不是普通的正常的代码执行情况。实际上是属于系统内代码有问题导致的报错。异常,我们往往使用Exception来表示。

三、异常的分类

我们这里讨论的异常主要分为两大类。

一类是自动自动抛出的异常,系统编译器自动判断来抛出异常。

举例:

laoliuAge=31/0

抛出异常ZeroDivisionError: division by zero

一类是人工手动抛出的异常,使用raise来手动抛出。

手动抛出异常使用:raise Exception,这里的Exception是一个异常类,类的话我就可以使用构造方法进行初始值的传入。也就是说传入的是异常的描述。我们可以使用raise Exception(“这里是我们的自定义异常”)

提问:实际中我们如何使用手动来抛出异常?

我们往往需要结合一些条件判断来手工抛出异常。

举例如下:

a=1

if a==1:

raise Exception("这里是老刘抛出的异常")

else:

print("沒有異常")

三、异常的利用

举例:

1.判断是否是int类型的数据

2.判断是否是string类型的数据

归纳一下:

1.我们可以利用异常来做一些数据类型的转换。

2.我们可以利用异常来进行数据类型的判断。

四、重要的内建类异常

  • Exception所有异常的基类
  • AttributeError属性引用或属性失败时抛出的异常
  • OSError当操作系统无法执行任务时抛出的异常
  • IndexError在使用序列中不存在的索引时抛出的异常
  • KeyError在使用映射中不存在的键值时抛出的异常
  • NameError找不到名字(变量)时抛出的异常
  • SyntaxError在代码为错误形式时触发
  • TypeError在内建操作或函数应用于错误类型的对象时抛出的异常
  • ValueError在内建操作或者函数应用于正确类型的对象,但该对象使用了不适合的值时抛出的异常
  • ZeroDivisionError在除法或者取模操作的第2个参数值为0时抛出的异常

五、总结强调

1.理解什么是异常?

2.理解异常的分类

3.掌握手动抛出异常的方法

4.学会利用异常,把异常的抛出为己所用

本节源代码:

代码语言:javascript
复制
# def shengChengqi():
#     list1=[3,5,2]
#     for i in list1:
#         yield i
#
# #使用变量来表示一个实际的生成器对象
# scq=shengChengqi()
# print(next(scq))
# print(next(scq))
# print(next(scq))
# print(next(scq))

# laoliuAge=31/0
# a=1
# if a==1:
#     raise Exception("这里是老刘抛出的异常")
# else:
#     print("沒有異常")


b="2"
c=int(b)+2
# try:
#     c=b+2
#     print(c)
# except:
#     print("程序有點小问题,请联系管理员")
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程创造城市 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档