Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python语法 - raise ... from 用法

Python语法 - raise ... from 用法

作者头像
上海-悠悠
发布于 2024-05-29 10:39:34
发布于 2024-05-29 10:39:34
23700
代码可运行
举报
运行总次数:0
代码可运行

前言

当程序出现错误时,系统会自动触发异常。Python 也允许程序自行引发异常,自行引发异常使用 raise 语句来完成。

  • 使用 raise 抛出新的异常
  • 使用 raise ... from ... 抛出新的异常时,新的异常是由旧的异常表现的;
  • 使用 raise ... from None 抛出新的异常时,不会打印旧的异常(即禁止的异常关联)

raise 引发异常

使用 raise 语句,主动引发异常,终止程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x = 20

if not isinstance(x, str):
    raise Exception("value is not type of str")
else:
    print("hello")

运行结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Traceback (most recent call last):
  File "D:/demo/untitled1/demo/a.py", line 4, in <module>
    raise Exception("value is not type of str")
Exception: value is not type of str

当raise 抛出异常时,程序就会终止

try… except 捕获异常

使用try… except 捕获异常

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x = [20, 3, 22, 11]

try:
    print(x[7])
except IndexError:
    print("index out of list")

运行后不会有异常 在捕获异常后,也可以重新抛一个其它的异常

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x = [20, 3, 22, 11]

try:
    print(x[7])
except IndexError:
    print("index out of list")
    raise NameError("new exception ...")

输出结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Traceback (most recent call last):
  File "D:/demo/untitled1/demo/a.py", line 4, in <module>
    print(x[7])
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:/demo/untitled1/demo/a.py", line 7, in <module>
    raise NameError("new exception ...")
NameError: new exception ...

在抛出异常的日志中,可以看到日志中对 IndexError 和 NameError之间是描述是 During handling of the above exception, another exception occurred,即在处理 IndexError 异常时又出现了 NameError 异常,两个异常之间没有因果关系。

raise … from 用法

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x = [20, 3, 22, 11]

try:
    print(x[7])
except IndexError as e:
    print("index out of list")
    raise NameError("new exception ...") from e

运行结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Traceback (most recent call last):
  File "D:/demo/untitled1/demo/a.py", line 4, in <module>
    print(x[7])
IndexError: list index out of range

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "D:/demo/untitled1/demo/a.py", line 7, in <module>    raise NameError("new exception ...") from e
NameError: new exception ...

在抛出异常的日志中,可以看到日志中对 IndexError和 NameError 之间是描述是 The above exception was the direct cause of the following exception,即因为 IndexError 直接异常导致了 NameError异常,两个异常之间有直接因果关系。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x = [20, 3, 22, 11]

try:
    print(x[7])
except IndexError as e:
    print("index out of list")
    raise NameError("new exception ...") from None

运行结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Traceback (most recent call last):
  File "D:/demo/untitled1/demo/a.py", line 7, in <module>
    raise NameError("new exception ...") from None
NameError: new exception ...

在抛出异常的日志中,可以看到日志只打印了 NameError 而没有打印 IndexError

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
20210225-1 Python错误与异常「建议收藏」
> 异常是一个事件,该事件会在程序执行过程中发生,影响程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生异常。异常是Python的对象,表示一个错误。当Python脚本发生异常时,我们需要捕获并处理异常,否则程序会终止执行。
全栈程序员站长
2022/09/07
8110
20210225-1 Python错误与异常「建议收藏」
python基础6
            *******************             *  异常处理与调式         *             ******************* ***常见错误:*** 1) 名字没有定义,NameError In [1]: print a --------------------------------------------------------------------------- NameError                                 Traceback (most recent call last) <ipython-input-1-9d7b17ad5387> in <module>() ----> 1 print a NameError: name 'a' is not defined 2) 分母为零,ZeroDivisionError In [2]: 10/0 --------------------------------------------------------------------------- ZeroDivisionError                         Traceback (most recent call last) <ipython-input-2-242277fd9e32> in <module>() ----> 1 10/0 ZeroDivisionError: integer division or modulo by zero 3) 文件不存在,IOError In [3]: open("westos") --------------------------------------------------------------------------- IOError                                   Traceback (most recent call last) <ipython-input-3-2778d2991600> in <module>() ----> 1 open("westos") IOError: [Errno 2] No such file or directory: 'westos' 4) 语法错误,SyntaxError In [4]: for i in [1,2,3]   File "<ipython-input-4-ae71676907af>", line 1     for i in [1,2,3]                     ^ SyntaxError: invalid syntax 5) 索引超出范围,IndexError In [5]: a = [1,2,3] In [6]: a[3] --------------------------------------------------------------------------- IndexError                                Traceback (most recent call last) <ipython-input-6-94e7916e7615> in <module>() ----> 1 a[3] IndexError: list index out of range In [7]: t =(1,2,3) In [8]: t[3] --------------------------------------------------------------------------- IndexError                                Traceback (most recent call last) <ipython-input-8-7d5cf04057c5> in <module>() ----> 1 t[3] IndexError: tuple index out of range In [9]: t[1:9]            ###切片的时候,若超出范围,则默认为全部,不报错 Out[9]: (2, 3) ####python异常处理机制:try......except......finally###### 例: #!/usr/bin/env python #coding:utf-8 try:                ###将可能发生错误的部分放在try下###     print "staring......"     li = [1,2,3]     print a     pri
py3study
2020/01/11
7660
Python异常处理详解
在shell脚本中,常用if来判断程序的某个部分是否可能会出错,并在if的分支中做出对应的处理,从而让程序更具健壮性。if判断是异常处理的一种方式,所有语言都通用。对于特性完整的编程语言来说,都有专门的异常处理机制,有些语言用起来可能会很复杂,要求一堆堆的,有些语言则非常简洁,用起来非常通畅。
py3study
2020/02/10
1.7K0
一文教你读懂 Python 中的异常信息
原文:https://realpython.com/python-traceback/
Crossin先生
2019/09/05
2.8K0
一文教你读懂 Python 中的异常信息
【python基础】python异常处理
一、异常的种类 在python中不同的异常可以用不同的类型去标识,一个异常标识一种错误。
python亦希
2021/12/14
7350
python 流程、循环、异常、函数的高级用法(3.0)
处理异常颗粒度要细一点, 尽量不要捕获基类Exception, 尤其是数据处理的时候.
友儿
2022/09/28
6590
python 流程、循环、异常、函数的高级用法(3.0)
Python异常处理
Python用异常对象来表示异常情况。遇到错误后,会引发异常。如果异常没有处理或捕捉,程序就会用traceback终止程序的执行,如果是在多线程程序中,则会终止当前线程的执行。
职场亮哥
2020/10/10
1.7K0
第七章 Python异常处理
顾名思义,异常就是程序因为某种原因无法正常工作了,比如缩进错误、缺少软件包、环境错误、连接超时等等都会引发异常。一个健壮的程序应该把所能预知的异常都应做相应的处理,应对一些简单的异常情况,使得更好的保证程序长时间运行。即使出了问题,也可让维护者一眼看出问题所在。因此本章节讲解的就是怎么处理异常,让你的程序更加健壮。
py3study
2020/01/06
6280
Python 错误和异常小结
1.Python异常类  Python是面向对象语言,所以程序抛出的异常也是类。常见的Python异常有以下几个,大家只要大致扫一眼,有个映像,等到编程的时候,相信大家肯定会不只一次跟他们照面(除非你不用Python了)。
py3study
2020/01/14
7400
Python基础之:Python中的异常和错误
和其他的语言一样,Python中也有异常和错误。在 Python 中,所有异常都是 BaseException 的类的实例。 今天我们来详细看一下Python中的异常和对他们的处理方式。
程序那些事
2021/03/29
1.4K0
腾讯大佬整理了 Python 所有内置异常,Python高手必备的排错手册
在编写程序时,可能会经常报出一些异常,很大一方面原因是自己的疏忽大意导致程序给出错误信息,另一方面是因为有些异常是程序运行时不可避免的,比如:在爬虫时可能有几个网页的结构不一致,这时两种结构的网页用同一套代码就会出错
龙哥
2020/09/22
1.1K0
腾讯大佬整理了 Python 所有内置异常,Python高手必备的排错手册
干!一张图整理了 Python 所有内置异常
在编写程序时,可能会经常报出一些异常,很大一方面原因是自己的疏忽大意导致程序给出错误信息,另一方面是因为有些异常是程序运行时不可避免的,比如在爬虫时可能有几个网页的结构不一致,这时两种结构的网页用同一套代码就会出错,所以我们就需要捕获出现的异常,以防止程序因为错误信息而终止运行。
奶糖猫
2020/07/30
1K0
干!一张图整理了 Python 所有内置异常
Python基础之(九)错误和异常
上面那句话因为缺少冒号:,导致解释器无法解释,于是报错。这个报错行为是由Python的语法分析器完成的,并且检测到了错误所在文件和行号(File "<stdin>", line 1),还以向上箭头^标识错误位置(后面缺少:),最后显示错误类型。
py3study
2020/01/03
7920
python异常处理的哲学
所谓异常指的是程序的执行出现了非预期行为,就好比现实中的做一件事过程中总会出现一些意外的事。异常的处理是跨越编程语言的,和具体的编程细节相比,程序执行异常的处理更像是哲学。限于认知能力和经验所限,不可能达到像解释器下import this看到的python设计之禅一样,本文就结合实际使用简单的聊一聊。
py3study
2020/01/17
1.3K0
Python抛出异常_python抛出异常的作用
在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误
全栈程序员站长
2022/11/02
2.8K0
python try/except/finally
稍微总结一下,否则总是忘。 x = 'abc' def fetcher(obj, index):   return obj[index]   fetcher(x, 4)   输出:   File "test.py", line 6, in <module>       fetcher(x, 4)     File "test.py", line 4, in fetcher       return obj[index]   IndexError: string index out of range
marsggbo
2018/01/23
5360
《Python基础教程》 读书笔记 第八章 各种各样的Erro
Python用异常对象(exception object)来表示异常情况。遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行
Ai学习的老章
2019/04/10
4590
异常处理(第十一章)内有福利
因为my_list只有“tianjun”这个字符串,pop()弹出后my_list为空,下面assert等式不成立,所以抛出异常
天钧
2019/07/26
5940
Python中的内置异常你知道那些,欢迎留言评论~~~
错误发生时,Python中会引发一些内置的异常。可以使用local()内置函数来查看这些内置异常,如下所示:
用户7466307
2020/07/09
3.1K0
【Python之旅】第四篇(二):Pyt
    在Python程序的执行过程中,难免会出现异常的情况,如果做的是跟用户交互的程序,当用户输入不可接受的内容时,在可预见的范围内,我们当然是希望可以给用户一些提示,而不是原来Python内置异常中的那些提示语句,毕竟那些语句只适合给程序员做调试参考,对用户并没有多大的价值。因此这就需要了解Python的常见异常了。
py3study
2020/01/10
7860
相关推荐
20210225-1 Python错误与异常「建议收藏」
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档