iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中异常的传播详解
  • 133
分享到

python中异常的传播详解

2024-04-02 19:04:59 133人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1、异常的传播2、如何处理异常1、异常的传播 当在函数中出现异常时,如果在函数中对异常进行了处理,则异常不会再继续传播。如果函数中没有对异常进行处理,则异常会继续向函数调用者传播

1、异常的传播

当在函数中出现异常时,如果在函数中对异常进行了处理,则异常不会再继续传播。如果函数中没有对异常进行处理,则异常会继续向函数调用者传播。如果函数调用者处理了异常,则不再传播,如果还没有处理,则继续向他的调用者传播,直到传递到全局作用域(主模块)如果依然没有处理,则程序终止,并且显示异常信息到控制台。所以异常的传播我们也称之为抛出异常。

异常传播示例如下:

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

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

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

fn3()

输出结果:

说明输出结果:

当我们调用fn3()方法的时候,会先输出Hello fn3,再向下执行调用fn2()方法,以此类推到fn1()方法中。可以看到上边有三条输出语句。

当执行到fn1()方法中print(10/0)语句,出现了ZeroDivisionError异常,而fn1()方法中没有处理该异常,则向他的调用者抛出这个异常,抛给了fn2()方法,以此类推,知道fn3()方法抛给了全局作用域中的调用者,异常依然没有被处理。

最后python的解释器会把这个异常显示在控制台中。

所以我们看到异常结果中,一行报错,向上抛了好几次。

例如:全局作用域中的代码有异常没有处理的话,就直接显示在控制台中了。

print(10 / 0)

输出结果:

2、如何处理异常

在异常抛出后的任何一个调用者处理该异常都可以。

异常处理如下:

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

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

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

try:
    fn3()
except :
    print("异常我已经处理过了。")
"""
输出结果:
Hello fn3
Hello fn2
Hello fn
异常我已经处理过了。
"""
# 我在全局作用域的地方进行了异常处理,
# 也可以在其他地方进行处理,不管在哪里处理,
# 最后都不会把错误抛向控制台的。

提示:

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

而不同的错误,会对应着不同的异常对象(也就是前边说的异常类型)。

如何查看Python异常对象?

在Python的本地文档中,找到[The Python Standard Library] —> [Built-in Exceptions],里面全是我们Python中的异常对象以及说明。

如下图所示:

到此这篇关于python中异常的传播详解的文章就介绍到这了,更多相关python异常传播内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python中异常的传播详解

本文链接: https://www.lsjlt.com/news/164051.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python中异常的传播详解
    目录1、异常的传播2、如何处理异常1、异常的传播 当在函数中出现异常时,如果在函数中对异常进行了处理,则异常不会再继续传播。如果函数中没有对异常进行处理,则异常会继续向函数调用者传播...
    99+
    2022-11-13
  • python异常传播怎么处理
    这篇文章主要讲解了“python异常传播怎么处理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python异常传播怎么处理”吧!1、异常的传播当在函数中出现异常时,如果在函数中对异常进行了处...
    99+
    2023-06-29
  • 详解python的异常捕获
    目录①捕捉一个异常②捕捉多个异常③Exception捕捉所有异常④raise主动触发异常⑤try…except…else…finally逻辑...
    99+
    2022-11-13
  • Python异常处理详解
    在shell脚本中,常用if来判断程序的某个部分是否可能会出错,并在if的分支中做出对应的处理,从而让程序更具健壮性。if判断是异常处理的一种方式,所有语言都通用。对于特性完整的编程语言来说,都有专门的异常处理机制,有些语言用起来可能会很...
    99+
    2023-01-30
    详解 异常 Python
  • 详解Python的函数与异常
    目录1. 函数1.1 自定义函数1.2 函数与参数1.3 函数与返回值2. 异常处理2.1 raise 语句2.2 异常捕获2.3 finally 子句总结1. 函数 抽象是程序能够...
    99+
    2022-11-12
  • Python中异常重试的解决方案详解
    前言 大家在做数据抓取的时候,经常遇到由于网络问题导致的程序保存,先前只是记录了错误内容,并对错误内容进行后期处理。 原先的流程: def crawl_page(url): pass def l...
    99+
    2022-06-04
    重试 详解 异常
  • python中异常捕获方法详解
    在Python中处理异常使用的是try-except代码块,try-except代码块放入让python执行的操作,同时告诉python程序如果发生了异常该怎么办,try-except这个功能其实很多入门书...
    99+
    2022-06-04
    详解 异常 方法
  • 详解c++中的异常
    目录一、什么是异常处理二、为什么需要异常处理,异常处理的基本思想三、异常出现之前处理错误的方式四、异常为什么好五、C++中使用异常时应注意的问题六、异常的基本语法1. 抛出和捕获异常...
    99+
    2022-11-12
  • Python之捕捉异常详解
    目录1.python中的异常2.捕捉异常try-except多个except子句 一个except块捕捉多个异常 空except:捕捉所有异常as语句: else语句:finally...
    99+
    2022-11-12
  • Spring事物的传播特性详解
    目录一、事务的传播性二、测试前准备2.1、准备好数据库表2.2、初始化spring项目2.3、数据库连接信息配置2.4、Service、Dao2.5、测试类2.6、说明三、使用其他传...
    99+
    2022-11-12
  • Java:详解Java中的异常
    目录Java异常常见异常throw和throws的区别final、finally、finalize的区别总结Java异常 Java中的异常:又称例外,是一个在程序执行期间发生的事件,...
    99+
    2022-11-12
  • Python学习之异常中的finally使用详解
    目录finally的功能与用法finally示例案例finally触发的必然性与优先级try语法伴随except或finally的必然性finally的历史今天我们来学习一下 异常语...
    99+
    2022-11-13
  • python异常捕获详解流程
    1 捕捉一个异常 捕捉一个异常 以用0作为除数会得到ZeroDivisionError异常为例, print(1/0) 为例程序的持续执行,不因该异常而中止, 遂对该异常进...
    99+
    2022-11-13
  • Netty分布式pipeline管道异常传播事件源码解析
    目录传播异常事件简单的异常处理的场景我们跟到invokeChannelRead这个方法我还是通过两种写法来进行剖析跟进invokeExceptionCaught方法跟到invokeE...
    99+
    2022-11-13
  • 详解SpringMVC中的异常处理
    目录1.SpringMVC默认三个异常处理类2.@ExceptionHandler注解异常3.@ResponseStatus注解异常4.DefaultHandlerException...
    99+
    2022-11-11
  • C++中的异常实例详解
    目录1. 异常1.1 C语言中处理错误的方式1.2 C语言处理错误方式的缺陷2. C++异常2.1 异常相关关键字2.2 异常的使用2.2.1 异常的抛出和匹配原则2.3 异常的重新...
    99+
    2022-11-13
  • python的广播机制详解
    目录为什么会有广播机制在矩阵或向量相关运算中的广播机制1、一般的运算2、一个矩阵一个向量的情况3、两个向量4、矩阵乘法的广播机制总结为什么会有广播机制 python语言在设计的时候,...
    99+
    2022-11-12
  • Python学习之异常处理详解
    目录什么是异常与异常处理异常的语法捕获通用异常捕获具体异常如何捕获多个异常捕获多个异常 - 方法1捕获多个异常 - 方法2本章节主要学习 python 中的异常处理,来看一下该章节的...
    99+
    2022-11-13
  • Python学习之异常断言详解
    该章节我们来学习 异常的最后一个知识点 - 断言 ,断言是判断一个表达式,在表达式为 False 的时候触发异常。表达式我们可以对号入座,可以是条件语句中的声明,也可以是是 whil...
    99+
    2022-11-13
  • 详解在Python程序中自定义异常的方法
    通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。 以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeE...
    99+
    2022-06-04
    自定义 详解 异常
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作