异常传播 | 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学习站

相关文章
|
15天前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
124 1
|
2月前
|
API 数据安全/隐私保护 开发者
Python自定义异常:从入门到实践的轻松指南
在Python开发中,自定义异常能提升错误处理的精准度与代码可维护性。本文通过银行系统、电商库存等实例,详解如何创建和使用自定义异常,涵盖异常基础、进阶技巧、最佳实践与真实场景应用,助你写出更专业、易调试的代码。
105 0
|
2月前
|
IDE 开发工具 数据安全/隐私保护
Python循环嵌套:从入门到实战的完整指南
循环嵌套是Python中处理多维数据和复杂逻辑的重要工具。本文通过实例讲解嵌套循环的基本用法、常见组合、性能优化技巧及实战应用,帮助开发者掌握其核心思想,避免常见错误,并探索替代方案与进阶方向。
111 0
|
20天前
|
调度 数据库 Python
Python异步编程入门:asyncio让并发变得更简单
Python异步编程入门:asyncio让并发变得更简单
94 5
|
4月前
|
Python
Python字符串格式化利器:f-strings入门指南
Python字符串格式化利器:f-strings入门指南
225 80
|
1月前
|
数据采集 存储 XML
Python爬虫入门(1)
在互联网时代,数据成为宝贵资源,Python凭借简洁语法和丰富库支持,成为编写网络爬虫的首选。本文介绍Python爬虫基础,涵盖请求发送、内容解析、数据存储等核心环节,并提供环境配置及实战示例,助你快速入门并掌握数据抓取技巧。
|
1月前
|
大数据 数据处理 数据安全/隐私保护
Python3 迭代器与生成器详解:从入门到实践
简介:本文深入解析Python中处理数据序列的利器——迭代器与生成器。通过通俗语言与实战案例,讲解其核心原理、自定义实现及大数据处理中的高效应用。
75 0
|
1月前
|
存储 缓存 安全
Python字典:从入门到精通的实用指南
Python字典如瑞士军刀般强大,以键值对实现高效数据存储与查找,广泛应用于配置管理、缓存、统计等场景。本文详解字典基础、进阶技巧、实战应用与常见陷阱,助你掌握这一核心数据结构,写出更高效、优雅的Python代码。
44 0
|
2月前
|
数据挖掘 数据处理 C++
Python Lambda:从入门到实战的轻量级函数指南
本文通过10个典型场景,详解Python中Lambda匿名函数的用法。Lambda适用于数据处理、排序、条件筛选、事件绑定等简洁逻辑,能提升代码简洁性和开发效率。同时提醒避免在复杂逻辑中过度使用。掌握Lambda,助你写出更高效的Python代码。
124 0

热门文章

最新文章

推荐镜像

更多