day9:异常处理(try,except,else, finally)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43264177/article/details/102763531

四、异常处理
一、什么是异常?
什么是异常:当程序运行中检测到一个错误时,无法继续执行,出现了一些错误的提示,这就是异常
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---------')

猜你喜欢

转载自blog.csdn.net/weixin_43264177/article/details/102763531