四、异常处理
一、什么是异常?
什么是异常:当程序运行中检测到一个错误时,无法继续执行,出现了一些错误的提示,这就是异常
1.电脑中常见的程序异常
2.我们写的代码发生异常
(1)变量没定义
(2)语法错误
(3)键不存在
(4)没找到模块
(5)类型错误
3.发生异常会导致什么样的后果
什么是异常?当程序运行中检测到一个错误时,无法继续执行,出现了一些错误的提示,这就是异常。
二、异常分析
1.异常类型介绍
详细的异常类型地址:添加链接描述
2.异常分析
(1)问题遇到异常时如何追根溯源,找到错误?
(2)异常案例
3.发生异常程序还要继续运行怎么办?
三、异常捕获
1.异常不活try–except:
(1)try:
下面是有可能出现异常的代码
(2)except NameError:
下面是捕获到异常之后的处理方案。
**注意点:**except后面不写异常类型,默认捕获所有的异常类型
(1)如果我们想要把捕获到的异常信息打印出来,这个时候我们应该怎么做?
except…as e:
在except 后面加as可以提取异常信息存储到变量中。
2.捕获多个指定的异常类型
方式一:
(1)try:
有可能出现的异常代码。
(2 except(NameError,ValueError)
捕获到以上两种异常的处理方案。
方式二:
(1)try:
有可能出现的异常代码。
(2)except ValueError
捕获到TabError异常的处理方案。
(3)except NameError:
捕获到NameError异常的处理方案。
方式三:
那么如果不确定捕获的类型,我们可以用Exception.
3.异常处理中的else和finally
问题回顾:学过那些语句可以用else?分别表示什么意思?
判断语句
循环语句
(1)try–except–else
异常捕获语句里面的else用在什么地方?
这个else,是在没有捕获到异常的情况下,才会运行,非常简单。
2.try–except–else–finally
finally的作用?
finally下面的代码,是不管有没有捕获得到异常,都会运行的代码。
# @time:2019/10/27 7:34
# @Author:coco
# @File:test_try.py
# @software:PyCharm
"""
异常捕获
try:
except:
else:
finally:
"""
a=100
try:
print(a+'abc')
except:
print('捕获到了异常')
try:
with open('ttt.txt','r') as f:
f.read()
except:
# 捕获到了异常
print('打开的文件不存在')
with open('ttt.txt','w') as f:
pass
运行结果:
# @time:2019/10/27 7:56
# @Author:coco
# @File:02指定捕获异常的处理.py
# @software:PyCharm
"""
异常捕获
try:
except:
else:
finally:
"""
a = 100
try:
print(a + 'abc')
# except后面可以写异常类型(指定只捕获这类型的错误)
except TypeError as e:
print('捕获到了异常')
print(e)
except NameError:
print('捕获变量没有被定义的错误')
print('python666')
# 方式二:一个except指定捕获多异常类型
try:
print(a + 'abc')
# except后面可以写异常类型(指定只捕获这类型的错误)
except (TypeError, NameError) as e:
print('捕获到了类型异常')
print(e)
# 捕获所有的异常类型(语法错误除外)
try:
# aa = 10000
print(a + 'abc')
# except后面可以写异常类型(指定只捕获这类型的错误)
except Exception as e:
print('捕获到了类型异常')
print(e)
else:
# try里面没有捕获异常
print('没有捕获到异常')
finally:
# rty里面的代码不管是否发生异常,它都会执行
print('----------finally---------')