我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python学习之异常处理的避坑指南

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python学习之异常处理的避坑指南

最终想了想,还是把这个章节单独拎出来,虽然字数不多。

在代码中,存在return也应当执行finally;

存在return时,else是不执行的;

无return时,else正常执行;

如果发生异常,则else也不执行

finally 与 return 的执行顺序

示例代码如下:

class Test(object):

    def division(self, num1, num2):
        try:
            if num2 == 0:
                return '除数不能为0'
            avg = num1 / num2
            return avg
        except Exception as e:
            print('ERROR')
        finally:
            print('FINALLY')


if __name__ == '__main__':
    test = Test()
    print(test.division(6, 0))
    
# >>> 执行结果如下:
# >>> FINALLY
# >>> 除数不能为0 

注意:即使有return也要是会执行finally的,而且是在return之前执行它。那么最后的结果为。

else 与 return 的执行顺序

示例代码如下:

class Test(object):

    def division(self, num1, num2):
        try:
            avg = num1 / num2
            return avg
        except Exception as e:
            print('ERROR')
        else:
            print('No ERROR')
        finally:
            print('FINALLY')


if __name__ == '__main__':
    test = Test()
    print(test.division(6, 2))


# >>> 执行结果如下:
# >>> FINALLY
# >>> 3.0

注意:有return时else是不执行的。所以执行结果如上面的示例代码

那么 无 return 时,执行结果又怎样?

class Test(object):

    def division(self, num1, num2):
        try:
            avg = num1 / num2
            # return avg
        except Exception as e:
            print('ERROR')
        else:
            print('No ERROR')
        finally:
            print('FINALLY')


if __name__ == '__main__':
    test = Test()
    print(test.division(6, 2))
    
# >>> 执行结果如下:
# >>> No ERROR
# >>> FINALLY
# >>> None

从运行结果我们得出结论:无return时,正常执行else 。

如果是发生异常的情况下, else 也是不会执行的。代码示例如下:

class Test(object):

    def division(self, num1, num2):
        try:
            avg = num1 / num2
            return avg
        except Exception as e:
            print('ERROR')
        else:
            print('No ERROR')
        finally:
            print('FINALLY')


if __name__ == '__main__':
    test = Test()
    print(test.division(4, 0))
    
# >>> 执行结果如下:
# >>> ERROR
# >>> FINALLY
# >>> None

总结

1、finally 与 return 的执行 顺序;即使有 return 也要执行 finally 的, 而且是在 return 之前执行它。

2、else 与 return 的执行顺序;有 return 时, else 是不执行的。无 return 时, 正常执行的 else 如果发生异常则不会继续执行else。

到此这篇关于Python学习之异常处理的避坑指南的文章就介绍到这了,更多相关Python异常处理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python学习之异常处理的避坑指南

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

下载Word文档

猜你喜欢

python学习之异常处理

一、语法导致的异常,应该在程序运行前处理例子:print(输出:File "E:/python/oldboyday9/learn1.py", line 4    if     ^SyntaxError: invalid syntax注:输出
2023-01-31

Python异常处理如何避坑

今天小编给大家分享一下Python异常处理如何避坑的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。finally 与 retu
2023-06-29

Python学习 :异常处理

异常处理  什么是异常处理  - python解释器检测到错误,触发异常(也允许程序员自己触发了异常)  - 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,只与异常处理有关)  - 如果捕捉成功则进入另外一个处理分支,
2023-01-30

Mockito 避坑指南 - 常见错误的预防与处理

在本文中,我们将讨论开发人员在 Spring Boot 应用程序中使用 Mockito 框架时犯的常见错误,以及代码示例和解释。
开发Mockito2024-11-30

Python学习笔记9——异常处理

就看这篇博客吧:一篇搞定所有的异常处理,讲的很详细。异常Python中各种异常也是类,类Exception继承自类BaseException,还有其他各种异常等等,此外,通过继承BaseException或者Exception可以自定义异常
2023-01-30

python基础学习15----异常处理

异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)。1.异常的类型异常的类型多种多样,常见的异常有:AttributeError 试图访问一个对象没有的属性,比如fo
2023-01-30

Python学习笔记整理(十七)异常处理

一、异常基础try/except:捕捉由代码中的异常并恢复,匹配except里面的错误,并自行except中定义的代码,后继续执行程序(发生异常后,由except捕捉到异常后,不会中断程序,继续执行try语句后面的程序)try/finall
2023-01-31

Python学习笔记总结(四):异常处理

一、异常基础1、基础try/except/else:【else是可选的】捕捉由代码中的异常并恢复,匹配except里面的错误,并执行except中定义的代码,后继续执行程序(发生异常后,由except捕捉到异常后,不会中断程序,继续执行tr
2023-01-31

python异常处理的哲学

所谓异常指的是程序的执行出现了非预期行为,就好比现实中的做一件事过程中总会出现一些意外的事。异常的处理是跨越编程语言的,和具体的编程细节相比,程序执行异常的处理更像是哲学。限于认知能力和经验所限,不可能达到像解释器下import this看
2023-01-30

Shell脚本学习指南之文本处理工具

4.1 排序文本 4.1.1 行的排序未提供命令行选项时,整个记录会根据当前locale所定义的次序排序。在传统的C locale中,也就是ASCII顺序。 4.1.2 以字段排序-k选项的后面接着的是一个字段编号,或者是一对数字。每个编号
2022-06-04

jmeter学习指南之常用函数的使用

说明:本文内容是基于jmeter3.0版本来编写,不同版本可能会有个别部分不一致,但是不会差别太大的。JMeter提供了很多函数,如果能够熟练使用,可以为脚本带来很多方便。JMeter函数是一种特殊值,可用于除测试计划外的任何组件。函数调用
2023-06-05

SpringMVC学习之JSON和全局异常处理详解

在项目上线之后,往往会出现一些不可预料的异常信息,对于逻辑性或设计性问题,开发人员或者维护人员需要通过日志,查看异常信息并排除异常,这篇文章主要给大家介绍了关于SpringMVC学习之JSON和全局异常处理的相关资料,需要的朋友可以参考下
2022-11-13

Spring Boot学习入门之统一异常处理详解

前言关于之前的一篇所讲到的表单验证中提到,如果产生错误,可以得到错误的信息,但是返回值的问题却没有考虑。其中所提到的Controller:@RequestMapping(value = "/doRegister", method = Req
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录