Python 异常处理 try-except,else,finally, with 语句的区别

这篇具有很好参考价值的文章主要介绍了Python 异常处理 try-except,else,finally, with 语句的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在日常编写程序时,难免会遇到错误,有的是由于疏忽造成的语法错误,有的是程序内部隐含逻辑问题造成的数据错误,还有的是程序运行时与系统的规则冲突造成的系统错误,等等。

总的来说,编写程序时遇到的错误可大致分为 2 类,分别为语法错误和运行时错误。

Python语法错误

语法错误,也就是解析代码时出现的错误。当代码不符合 Python 语法规则时,Python解析器在解析时就会报出 SyntaxError 语法错误。

例如:print ‘Today is Friday’

由于 Python 3版本 已经不再支持这种省略写法,所以在运行时,解析器会报错: SyntaxError: Missing parentheses in call to ‘print’

Python运行时错误

运行时错误,也就是程序在语法上都是正确的,但在运行时发生了错误。

例如: print ( 1/0 )

由于 分母为0 时没有意义,所以在运行时,解析器会报错: ZeroDivisionError: division by zero

当一个程序发生异常时,代表该程序在执行时出现了非正常的情况,无法再执行下去。默认情况下,程序是要终止的。如果要避免程序退出,可以使用捕获异常的方式获取这个异常的名称,再通过其他的逻辑代码让程序继续运行,这种根据异常做出的逻辑处理叫作异常处理。

在 Python 中,把这种运行时产生错误的情况叫做异常(Exceptions),常见的异常类,如下图 :

Python 异常处理 try-except,else,finally, with 语句的区别
try, except 的用法

例1 :

当 num1 输入 a 或者其他字母时,解析器检测到输入了一个无效的数字时,就会执行 except 后的代码块(语句),如下图:

Python 异常处理 try-except,else,finally, with 语句的区别


例2:

当num2 输入0时,解析器检测到分母为 0,执行except 后的代码块。
(1) 首先执行 print(‘the second number cannot be zero!’)
(2) 抛出异常,输出异常提示 如下图:


Python 异常处理 try-except,else,finally, with 语句的区别

例3 :

当 except 不带异常类名,无论出现什么异常,都会执行后面的语句,如下图:

Python 异常处理 try-except,else,finally, with 语句的区别

例4 :

except 加上 Exception (常规异常的类) 出现什么异常,就输出什么异常提示。

当 num2 为 0时,检测到分母为0,执行后面语句,并输出异常提示。
当 num1 为 a时,检测到输入无效数字,执行后面语句,并输出异常提示。

如下图:

Python 异常处理 try-except,else,finally, with 语句的区别

例5 :

多个 except 语句: 当符合哪种异常,就执行相对应的语句, 如下图:

Python 异常处理 try-except,else,finally, with 语句的区别

例6 :

一个except 块捕捉多个异常,当符合指定异常类时,执行后面的语句,如下图:

Python 异常处理 try-except,else,finally, with 语句的区别

try … except & else 的用法

当检测到有异常时,会直接输出异常提示。

如果没有异常,输出结果以及 else 后的代码块(语句)。

如下图:

Python 异常处理 try-except,else,finally, with 语句的区别

try … except & finally 的用法

无论是否遇到异常,最后都会执行 finally后的代码块(语句),如下图:

Python 异常处理 try-except,else,finally, with 语句的区别
try … except & finally,打开文件(以 txt为例) 的用法

当打开一个不存在的文件时,会执行 IOError 后的代码块(语句)。

由于finally 后的 file 无定义,因此当执行file.close()时,就会报错,而后面: print(‘testing is finished’) 的语句并没有执行。 如下图1:

注: 由于indentation,因此finally 里的 file 和 try 里的 file 不一样。

如果把 finally 后代码块里的语句调转,就会先执行print(‘testing is finished’) 的语句,最后直接显示报错,入下图2:

打开 txt,为跳过不必要的报错,用 with open 语法,可以省去 file.close() 如下图3

Python 异常处理 try-except,else,finally, with 语句的区别
Python 异常处理 try-except,else,finally, with 语句的区别
Python 异常处理 try-except,else,finally, with 语句的区别
总结: try语句必须有一个except或一个finally,else是可选的,但是如果有else,则必须至少有一个except。文章来源地址https://www.toymoban.com/news/detail-404616.html

到了这里,关于Python 异常处理 try-except,else,finally, with 语句的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java try throw exception finally 遇上 return break continue造成异常丢失

        如下所示,是一个java笔试题,考察的是抛出异常之后,程序运行结果,但是这里抛出异常,并没有捕获异常,而是通过finally来进行了流程控制处理。     运行程序,打印结果如下所示:       这里结果有些出人意料,并没有打印异常信息,其实就是try finally遇到了con

    2024年02月08日
    浏览(32)
  • java中的异常,以及出现异常后的处理【try,catch,finally】

    异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 注意: 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。 异常机制其实是帮助我们找到程序中的问题

    2024年02月08日
    浏览(33)
  • JavaScript的try-catch-finally异常处理机制--详解

    JavaScript 提供了异常处理机制,通过 try-catch-finally 语句块来捕获和处理异常。以下是对该机制的详细解释和示例: 1. try 块: try 块用于包裹可能会产生异常的代码块。在 try 块内,您可以放置任何可能引发异常的代码。 2. catch 块: catch 块用于捕获和处理 try 块中抛出的异常。

    2024年02月11日
    浏览(47)
  • 基于try-except模块的ZeroDivisionError: division by zero解决办法

    顾名思义,ZeroDivisionError: division by zero就是除数为0的情况,也可以理解为分母为0的情况。如1/0,2/0,3/0等,但有些场和我们可能需要分母位置的0值,例如我要比较分子与分母的大小,取得其中的相对小值作为一个变量,包括0。 对于上述情况,可以采用try-except异常捕获模块

    2024年02月06日
    浏览(28)
  • 【Java练习题汇总】《第一行代码JAVA》异常处理篇,汇总Java练习题——异常的概念及处理标准格式(try、catch、finally、throws、throw)、断言机制 Assertion ~

    一、填空题 Throwable 下的两个子类是______________ 、______________ 。 ArthmeticException 类表示______________ 异常, ArraysIndexOutOfBoundsException 表示______________ 异常。 一个 try 代码后面必须跟着若干个_______ 代码段或者一个_______ 代码段。 如果一个方法使用了_______ , 则编译器会强制在使用此

    2024年02月16日
    浏览(28)
  • [oeasy]python0139_尝试捕获异常_ try_except_traceback

    变量相加 整型数字变量可以相加 字符串变量也可以拼接 但是 字符串 和 整型数字 整型数字 和 字符串 不能相加 怎么办? 转格式 int(“1”) str(2) 可是 如果输入的苹果数量是 字符串\\\"abc\\\" int(“abc”)会发生什么??😱 先试试看 虽然我有了心理准备 但是 python 显然还没有准备好

    2023年04月25日
    浏览(31)
  • Effective Java笔记(9)try-with-resources 优先于 try -finally

            Java 类库中包括许多必须通过调用 close 方法来手工关闭的资源 。 例如 InputStream 、OutputStream 和 java.sql.Connection 。 客户端经常会忽略资源 的关闭 ,造成严重的性能后果也就可想而知了 。 虽然这其中的许多资源都是用终结方法作为安全网,但是效果并不理想。  

    2024年02月15日
    浏览(39)
  • 详解Java中的异常体系结构(throw,throws,try-catch,finally,自定义异常)

    目录 一.异常的概念 二.异常的体系结构 三.异常的处理 异常处理思路 LBYL:Look Before You Leap EAFP: It\\\'s Easier to Ask Forgiveness than Permission 异常抛出throw 异常的捕获 提醒声明throws  try-catch捕获处理 finally的作用 四.自定义异常类 有一句话说的很好 ”程序员不是在写BUG就是在改BUG”

    2024年02月05日
    浏览(33)
  • try语句异常处理

    try语句 ​ 使用try语句主要是为了进行异常的捕捉处理,异常在python也有几个基类 异常的所有基类 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行 Exception 常规错误的基类 StopIteration 迭代器没有更多的值 GeneratorExit 生成器发生异

    2024年02月07日
    浏览(31)
  • Python基础学习:try...except...的详细用法

    我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except 1.异常类只能来处理指定的异常情况,如果非指定异常则无

    2024年02月09日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包