异常传播 | Python从入门到精通:高阶篇之四十一

简介: 当在函数中出现异常时,如果在函数中对异常进行了处理,则异常不会再继续传播;如果函数中没有对异常进行处理,则异常会继续向函数调用处传播;如果函数调用处处理了异常,则不再传播,如果没有处理则继续向调用处传播;直到传递到全局作用域(主模块)如果依然没有处理,则程序终止,并且显示异常信息。

异常简介 | Python从入门到精通:高阶篇之四十

异常传播

def fn():
    print('Hello fn')

fn()

执行结果:

image.png

此时可以正常执行输出。
在全局中添加代码,造成异常:

print(10/0)

执行结果:

image.png

我们在函数中添加异常代码:

def fn():
    print('Hello fn')
    print(10/0)

fn()

执行结果:

image.png

当在函数中出现异常时,如果在函数中对异常进行了处理,则异常不会再继续传播;如果函数中没有对异常进行处理,则异常会继续向函数调用处传播;如果函数调用处处理了异常,则不再传播,如果没有处理则继续向调用处传播;直到传递到全局作用域(主模块)如果依然没有处理,则程序终止,并且显示异常信息。

我们修改上述代码:

def fn():
    print('Hello fn')
    print(10/0)

try:
    fn()
except:
    pass

执行结果:

image.png

此时异常就被处理掉了,程序可以正常执行。
我们再来看一个:

def fn():
    print('Hello fn')
    print(10/0)

def fn2():
    print('Hello fn2')
    fn()

fn2()

def fn3():
    print('Hello fn3')
    fn2()

fn3()    

执行结果:

image.png

我们可以看出异常未经过处理,传播的过程。即抛出异常。

当程序运行过程中出现异常以后,所有的异常信息会被保存一个专门的异常对象中,而异常传播时,实际上就是异常对象抛给了调用处。

比如 : ZeroDivisionError类的对象专门用来表示除0的异常;
NameError类的对象专门用来处理变量错误的异常;
....

在Python为我们提供了多个异常对象 。
我们通过官方文档去查找。

image.png
image.png

里面提供了很多的异常信息。
我们是通过对象抛出异常的,那么如何知道异常的信息呢?我们下一节来看。

配套视频课程,点击这里查看

获取更多资源请订阅Python学习站

相关文章
|
2天前
|
Python
【Python进阶(一)】——异常与错误
【Python进阶(一)】——异常与错误
|
2天前
|
算法 物联网 数据库
Python 物联网入门指南(一)(4)
Python 物联网入门指南(一)
15 3
|
2天前
|
物联网 Linux 网络安全
Python 物联网入门指南(一)(3)
Python 物联网入门指南(一)
15 4
|
2天前
|
网络协议 物联网 Linux
Python 物联网入门指南(一)(2)
Python 物联网入门指南(一)
10 1
|
2天前
|
物联网 机器人 异构计算
Python 物联网入门指南(一)(1)
Python 物联网入门指南(一)
11 2
|
3天前
|
Python Windows
python中的异常与模块
python中的异常与模块
9 1
|
6天前
|
监控 Python
Python中精通异常日志记录
Python中精通异常日志记录
10 0
|
7天前
|
机器学习/深度学习 数据采集 数据可视化
利用Python进行历史数据预测:从入门到实践的两个案例分析
利用Python进行历史数据预测:从入门到实践的两个案例分析
20 1
|
12天前
|
机器学习/深度学习 自然语言处理 语音技术
【Python 机器学习专栏】Python 深度学习入门:神经网络基础
【4月更文挑战第30天】本文介绍了Python在深度学习中应用于神经网络的基础知识,包括神经网络概念、基本结构、训练过程,以及Python中的深度学习库TensorFlow和PyTorch。通过示例展示了如何使用Python实现神经网络,并提及优化技巧如正则化和Dropout。最后,概述了神经网络在图像识别、语音识别和自然语言处理等领域的应用,并强调掌握这些知识对深度学习的重要性。随着技术进步,神经网络的应用将持续扩展,期待更多创新。
|
12天前
|
机器学习/深度学习 算法 数据可视化
Python用KNN(K-近邻)回归、分类、异常值检测预测房价、最优K值选取、误差评估可视化
Python用KNN(K-近邻)回归、分类、异常值检测预测房价、最优K值选取、误差评估可视化