python基础学习浅学异常

############第一部分:::异常
注意:当代码出现了异常,后面的代码都不会执行。
异常本身是类
小知识点:
在 Python 中所有的异常都是继承自 BaseException
直接分为四大类:
SystemExit:Python退出异常
KeyboardInterrupt: 键盘打断(Ctrl+C)
GeneratorExit: 生成器退出(下次课再讲)
Exception: 普通异常(只会使用这部分的异常)

###########第二部分:::异常处理
(1)基本的try…except…
举例子:
try:
print(11) # 这是正确的,会打印出来
print(a) # a没定义,所以会出现异常
print(22) # 因为上面一句出现了异常,所以即使这句是正确的,也不会打印
except:
print(‘这里出现了异常’)
输出:
11
这里出现了异常

注意:try 后面必须跟上 except

(2)捕获具体的异常
except 后面可以写上捕获具体的异常类型
还可以通过as 把捕获的异常信息 储存到后面的变量里面
例子:
try:
print(11)
print(a)
print(22)
except NameError as t: #注意这个具体的异常必须和上面出现的异常一样。可以换成Exception,这是所有异常的父类
print(‘这里出现了异常’)
print(‘错误的原因是:%s’%t)
输出:
11
这里出现了异常
错误的原因是:name ‘a’ is not defined

(3)捕获多种异常
写法一:可以写多个except
try:
pass
except TabError:
pass
except NameError:
pass

写法二:在except后面用括号把多种异常类型给括起来
try:
pass
except (NameError,TabError):
pass

如果不确定异常类型:
try:
pass
except Exception: #因为Exception里面包括所有普通异常
pass

关于 Exception 及其 子类 的解释:
代码中会出现的异常都是 Exception 的子类, 因此在 except 中只需要在最后加上 Exception 即可

在捕获异常的过程中,会从上倒下依次对比异常,找到之后就不会再往后查找

(4)更加丰富的结构:
try:
print(11)
print(a)
print(22)
except Exception as result:
print(‘捕获到了异常,会执行我下面的代码对异常进行处理’)
print(result)
else:
print(‘没有捕获到异常,执行我’)
finally:
print(‘不管有没有异常,我都会执行’)

注意事项:
1.try 下面放可能出错的代码
2.except try下面的代码出错后,会执行except下面的代码
4.finally 不管try下面的代码有没有出错,始终都会执行

(5)扩展(自定义异常类型)
raise 主动抛出异常
格式:raise 异常类型
注意:raise是主动抛出后面写的异常类型

1.可以自己写自定义的异常:
class WuMou(Exception):
pass
raise WuMou(‘出现错误’)
输出为:
Traceback (most recent call last):
File “C:/my/pycharm_work/ceshi.py”, line 3, in
raise WuMou(‘出现错误’)
main.WuMou: 出现错误

可以捕获这个异常:
class WuMou(Exception):
pass

try:
raise WuMou(‘出现错误’)
except WuMou as h:
print(h)
输出为:
出现错误

2.例子:
raise NameError(‘出现错误啦’)
输出为:
Traceback (most recent call last):
File “C:/my/pycharm_work/ceshi.py”, line 2, in
raise NameError(‘出现错误啦’)
NameError: 出现错误啦

3.结合捕获异常一起使用:
例子:
try:
while True: #可以结束死循环
if 1 == 1:
raise NameError(‘出现错误啦’)
except Exception as e:
print(e)

输出:
出现错误啦

小总结:
将可能会发生异常的代码放在try中,就可以得到异常,并做相应处理
except用来接受异常,并且可以抛出或者返回异常
else在没有异常的时候会执行,finally不管是否有异常,都会执行

################第三部分:::断言
问题一: 如何能在代码中强制要求一个条件满足 ?
问题二: 是否有专门的语法来完成 ?

断言 assert
断言语句是将调试断言插入程序的一种便捷方式

assert 的语法规则是:
表达式返回 True 不报错
表达式返回 False 报错 报 AssertionError

来个简单的例子:
a = input(‘你是谁:’)
assert a == ‘吴某’,‘你不是吴某’
print(‘欢迎你 吴某’)
第一种输出为:
你是谁:吴某
欢迎你 吴某
第二种输出为:
你是谁:中国
Traceback (most recent call last):
File “C:/my/pycharm_work/ceshi.py”, line 2, in
assert a == ‘吴某’,‘你不是吴某’
AssertionError: 你不是吴某

升级一点的例子:
a = input(‘你是谁:’)
try:
assert a == ‘吴某’,‘你不是吴某’
print(‘欢迎你 吴某’)
except AssertionError as f:
print(f)
第一种输出:
你是谁:吴某
欢迎你 吴某
第二种输出:
你是谁:中国
你不是吴某

发布了14 篇原创文章 · 获赞 15 · 访问量 225

猜你喜欢

转载自blog.csdn.net/qq_44907926/article/details/104341973