「这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战」
第一部分:::异常
注意:当代码出现了异常,后面的代码都不会执行。
异常本身是类
小知识点:
在 Python 中所有的异常都是继承自 BaseException
直接分为四大类:
SystemExit:Python退出异常
KeyboardInterrupt: 键盘打断(Ctrl+C)
GeneratorExit: 生成器退出
Exception: 普通异常(只会使用这部分的异常)
第二部分:::异常处理
(1)基本的try…except…
举例子:
1 | python复制代码try: |
输出:
11
这里出现了异常
注意:try 后面必须跟上 except
(2)捕获具体的异常
except 后面可以写上捕获具体的异常类型
还可以通过as 把捕获的异常信息 储存到后面的变量里面
例子:
1 | python复制代码try: |
输出:
11
这里出现了异常
错误的原因是:name ‘a’ is not defined
(3)捕获多种异常
写法一:可以写多个except
1 | python复制代码try: |
写法二:在except后面用括号把多种异常类型给括起来
1 | python复制代码try: |
如果不确定异常类型:
1 | python复制代码try: |
关于 Exception 及其 子类 的解释:
代码中会出现的异常都是 Exception 的子类, 因此在 except 中只需要在最后加上 Exception 即可
在捕获异常的过程中,会从上倒下依次对比异常,找到之后就不会再往后查找
(4)更加丰富的结构:
1 | php复制代码try: |
注意事项:
1.try 下面放可能出错的代码
2.except try下面的代码出错后,会执行except下面的代码
4.finally 不管try下面的代码有没有出错,始终都会执行
(5)扩展(自定义异常类型)
raise 主动抛出异常
格式:raise 异常类型
注意:raise是主动抛出后面写的异常类型
1.可以自己写自定义的异常:
1 | python复制代码class WuMou(Exception): |
输出为:
1 | arduino复制代码Traceback (most recent call last): |
可以捕获这个异常:
1 | python复制代码class WuMou(Exception): |
输出为:
出现错误
2.例子:
1 | java复制代码raise NameError('出现错误啦') |
输出为:
1 | arduino复制代码Traceback (most recent call last): |
本文转载自: 掘金