Pythontryexceptelse详解

在原本的tryexcept结构的基础上,Python异常处理机制还提供了一个else块,也就是原有tryexcept语句的基础上再添加一个else块,即tryexceptelse结构。

使用else包裹的代码,只有当try块没有捕获到任何异常时,才会得到执行;反之,如果try块捕获到异常,即便调用对应的except处理完异常,else块中的代码也不会得到执行。

举个例子:

try:
 result = 20 / int(input('请输入除数:'))
 print(result)except ValueError:
 print('必须输入整数')except ArithmeticError:
 print('算术错误,除数不能为 0')else:
 print('没有出现异常')
print("继续执行")12345678910复制代码类型:[python]

可以看到,在原有tryexcept的基础上,我们为其添加了else块。现在执行该程序:

请输入除数:45.0没有出现异常
继续执行1234复制代码类型:[python]

如上所示,当我们输入正确的数据时,try块中的程序正常执行,Python解释器执行完try块中的程序之后,会继续执行else块中的程序,继而执行后续的程序。

读者可能会问,既然Python解释器按照顺序执行代码,那么else块有什么存在的必要呢?直接将else块中的代码编写在tryexcept块的后面,不是一样吗?

当然不一样,现在再次执行上面的代码:

请输入除数:a
必须输入整数
继续执行123复制代码类型:[python]

可以看到,当我们试图进行非法输入时,程序会发生异常并被try捕获,Python解释器会调用相应的except块处理该异常。但是异常处理完毕之后,Python解释器并没有接着执行else块中的代码,而是跳过else,去执行后续的代码。

也就是说,else的功能,只有当try块捕获到异常时才能显现出来。在这种情况下,else块中的代码不会得到执行的机会。而如果我们直接把else块去掉,将其中的代码编写到tryexcept的后面:

try:
 result = 20 / int(input('请输入除数:'))
 print(result)except ValueError:
 print('必须输入整数')except ArithmeticError:
 print('算术错误,除数不能为 0')
print('没有出现异常')
print("继续执行")123456789复制代码类型:[python]

程序执行结果为:

请输入除数:a
必须输入整数
没有出现异常
继续执行1234复制代码类型:[python]

可以看到,如果不使用else块,try块捕获到异常并通过except成功处理,后续所有程序都会依次被执行。

(0)

相关推荐

  • Python学习之路【第一篇】

    1.1 Python是什么相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是一种开发语言,而且已经进 ...

  • python try异常处理

    什么是异常 python异常捕获,在刚开始学的时候,经常会遇到两种报错信息:语法错误和执行的异常. 语法错误在执行的时候就会报错,同时控制端会告诉你错误所在的行: 但即便python程序语法是正确的, ...

  • 深入 Python 异常处理

    (给Python开发者加星标,提升Python技能) 来源:Python之王-小sen [导语]:本文结合例程总结Python异常处理的相关知识,帮你深入理解python异常处理. 在Python 中 ...

  • Python基础学习笔记(八)异常处理

    本节知识大纲: 本节知识大纲 一.概念 什么是异常? 在程序运行过程中发生错误和意外,这些错误和意外往往不是语法错误. 定义:语法错误不属于异常,因为语法错误没办法让软件正常运行:正确情况下的异常指的 ...

  • Python解释器哪个好?

    学会使用各式各样的工具是非常重要的,可以让工作或学习变得更加便利.高效.比如说Python,大家都知道Python是一门解释器语言,代码如果想要运行,必须通过解释器来执行,但是Python解释器众多, ...

  • 跟光磊学Python开发

    跟光磊学Python开发-异常机制 原创ittimeline2021-02-15 17:21:45 异常概述 异常指的是不正常,也就是程序在执行过程中发生了不可预知的问题,导致程序崩溃. Python ...

  • 胎元命宫详解

    胎元命宫详解 胎元命宫 8.1 胎元 胎, 指人受精怀胎的月份. 其起法是: 人生月后紧接着这个月的天干与生月后第三个月的地支相配, 就为胎元. 如1998年八月生人, 八月为辛酉, 辛后一干是壬, ...

  • 批八字算婚姻详解

    批八字算婚姻详解 很多人喜欢在孩子一出生的时候就给他们算一下八字,因为他们相信孩子的八字和命运是相对注定了的,通过算命之后可以顺利的避免一些可能在生活中遇到的一些问题和坎坷,也可以顺利度过一些&quo ...

  • 电视选购12个重要参数详解,看完你就是专家,附:爆款推荐

    本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:白云上的鱼 创作立场声明:分享电视选购知识,重要参数详解,轻松搞定电视选购. 目前电视的选择太多太多了,品牌百花齐放琳琅满目,各种高科技加成 ...

  • 倪海厦:病是问出来的|问诊十法详解

    倪海厦,美国经方中医,被喻为当代少见的"命.相.卜.山.医"五术兼备之旷世奇人. (倪师)中医的问诊十个法则 我们经方家的问诊非常重要,因此有必要为读者说明一下,如何找经方家看病, ...

  • 为何医生让他把氨氯地平换成缬沙坦?药师详解两类降压药的好与坏

    硝苯地平.氨氯地平.缬沙坦.氯沙坦等等,这些降压药都是高血压患者常用的降压药.从名字中也可以看出这些降压药属于两类不同的降压药,一种是地平类,即为钙离子拮抗剂(CCB),另外一种是沙坦类,即为血管紧张 ...

  • 几何探究类压轴题:精编20例及详解

    成才路上 初中精品学习资料 104篇原创内容 公众号 / END /

  • 高考物理11类重点题型全解析! 附经典例题&详解

    高考理科综合卷中,物理部分选择题有单项和双项选择题两种题型.从最近几年的试题看: 4道单项选择难度低,考查的考点相对稳定且相对单一,涉及的知识点主要有共点力平衡.热力学第一定律.气体状态方程.分子动理 ...

  • 【同步讲练】七年级下册:二元一次方程组七种典型例题详解,一次解决应用问题!

    【同步讲练】七年级下册:二元一次方程组七种典型例题详解,一次解决应用问题!

  • 行书基础笔法详解,以兰亭序为例,建议收藏学习

    学好行书 4篇原创内容 公众号 欢迎您查看行书名帖 在行书的书写中,我们一方面要注意其字形,另一方面更要注意笔画的写法,因为笔画是字的基本构成元素.因此,把握好每个笔画的写法是最为重要的一个学习环节. ...