百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

76. 异常 #python

off999 2024-11-19 08:35 25 浏览 0 评论

76.异常。

这节课我们来讲一下程序运行当中的异常问题,叫做exception。在程序运行当中可能会遇到各种各样运行时的问题,比如无效的输入、某个文件不存在了、网络连接错误等等其他异常。当这种异常发生的时候会导致程序异常退出或者崩溃。异常处理就是一种非常优雅的应对这些问题,保证程序的稳定性。

我们都会遇到哪些异常?这里看一个小例子,假如有一个列表my list里边有10个数字,大家可以看到my list里边10个数字就是从0到9。再定一个number,比如是10,然后就foriin这个list,让list里边每一个元素都被10除以下,打印一下10除以i的结果,来运行一下。

这个时候会发现程序异常的退出了,并没有执行完。它告诉我们在第6行print10除以i的时候遇到了一个除数为0的情况。大家知道除数为0这种情况下是不应该存在的,会异常退出的。这就是程序在运行时遇到的异常的一个小例子。

怎么样让程序正常的运行完而不退出?这里就运用到了异常处理机制。异常处理用的是try和except这两个关键词。try的代码块里边放入想要跑的业务逻辑程序,try的代码块里边写的是想要执行的业务逻辑程序,而exception的代码块里边则写的是如果上面的代码块出现了问题,需要怎么处理所执行的代码语句。

有了这两部分就可以保证当程序这里出错的时候执行这里的代码,进而提升了程序的稳定性。如这个例子而言,这里的i是可能会取到0的。在这里边就需要来告诉程序捕捉除数为0的异常,把这个复制一下,捕捉这异常。当捕捉到这异常的时候就把它打印出来,打印出来了e是什么东西。

这样再执行一下这段代码,可以看到,这个代码就正常的执行完成了。

当它遇到i等于0的时候会报出异常,报出异常被这个exception的语句截获到,打印出来的这个异常的信息就是divide,就是division by Zero,然后程序没有异常退出,没有崩溃,再继续的跑到下一次的for循环里边。当i跳过0之后,其余i取任何值都不会再报异常了,所以就会正确的执行出来10除以i的结果。

这就是try exception对程序异常处理的一种应用。在编写代码的过程当中常常会用到一些异常处理和业务逻辑紧密相关的,而这些异常处理是Python里边默认没有的,这就需要通过自己的定义来实现这样的自定义的异常类。

自定义的异常类方法也很简单,首先在python里边所有的东西都是对象,这个exception也不例外,那exception它的父类,它的基类就是exception。在定义自定义类的时候,首先这个类必须要继承exception这个类,继承了这个类之后,下面只要定义一下初始化参数就可以了。

在这里就先定义一个message,先默认一个message叫self defined exceptions,然后就把这个message传到负类的除值化参数里面去,这样就定义完了一个自定义的异常类。

在代码里边,比如说需要在某一个业务里边抛出异常,通过raise这个customized error,然后捕获exception as ce,然后再打印一下这个CE,执行一下这段代码。可以看到当抛出一个customer error的时候,捕获到的custom error并打印出了它相应的默认信息self defined exceptions。

但在程序里边可能会存在各种各样的情况,比如说这段代码里边有很多的业务逻辑,有可能在不知道在哪个方面会抛出异常,而且异常的类型都是不一样的。这种情况下指定具体的exception可能就不是特别的方便。

这里需要用到上节课面相对象里讲的,使用父类在这里边exception,通过exception asCE来获取所有的exception。

·再来执行下这个代码,可以看到也正确执行了。把上面这个代码也拷贝下来,再一次执行这个代码,来看一下它能打印出来什么信息。可以看到它打印出了两种error。

→第一种error是当i等于0的时候,它的除数是0的error。

→当除数不为0的时候,它会获取到所有的自定义的customer erron。

这样就通过捕获父类这种类型的exception捕获到所有的逻辑代码里的所有的erron。

这节课就讲到这里,下节课来讲一下Python里的模块与包的一些基本概念。

相关推荐

Python Flask 容器化应用链路可观测

简介Flask是一个基于Python的轻量级Web应用框架,因其简洁灵活而被称为“微框架”。它提供了Web开发所需的核心功能,如请求处理、路由管理等,但不会强制开发者使用特定的工具或库。...

Python GUI应用开发快速入门(python开发软件教程)

一、GUI开发基础1.主流GUI框架对比表1PythonGUI框架比较框架特点适用场景学习曲线Tkinter内置库,简单小型应用,快速原型平缓PyQt功能强大,商用许可专业级桌面应用陡峭PySi...

【MCP实战】Python构建MCP应用全攻略:从入门到实战!

实战揭秘:Python Toga 打造跨平台 GUI 应用的神奇之旅

在Python的世界里,GUI(图形用户界面)开发工具众多,但要找到一款真正跨平台、易于使用且功能强大的工具并不容易。今天,我们就来深入探讨一下Toga——一款Python原生、操作系统原...

python应用目录规划(python的目录)

Python大型应用目录结构规划(企业级最佳实践)核心原则模块化:按业务功能拆分,高内聚低耦合可扩展性:支持插件机制和动态加载环境隔离:清晰区分开发/测试/生产环境自动化:内置标准化的构建测试部署流...

Python图形化应用开发框架:PyQt开发简介

PyQt概述定义:PyQt是Python绑定Qt框架的工具集,用于开发跨平台GUI应用程序原理:通过Qt的C++库提供底层功能,PyQt使用SIP工具生成Python绑定特点:支持Windows/ma...

[python] 基于PyOD库实现数据异常检测

PyOD是一个全面且易于使用的Python库,专门用于检测多变量数据中的异常点或离群点。异常点是指那些与大多数数据点显著不同的数据,它们可能表示错误、噪声或潜在的有趣现象。无论是处理小规模项目还是大型...

Python、Selenium 和 Allure 进行 UI 自动化测试的简单示例脚本

环境准备确保你已经安装了以下库:SeleniumAllurepytest你可以使用以下命令安装所需库:pipinstallseleniumallure-pytestpytest示例代码下面的代...

LabVIEW 与 Python 融合:打造强大测试系统的利器

在现代测试系统开发领域,LabVIEW和Python各自凭借独特优势占据重要地位。LabVIEW以图形化编程、仪器控制和实时系统开发能力见长;Python则凭借丰富的库资源、简洁语法和强大数...

软件测试进阶之自动化测试——python+appium实例

扼要:1、了解python+appium进行APP的自动化测试实例;2、能根据实例进行实训操作;本课程主要讲述用python+appium对APP进行UI自动化测试的例子。appium支持Androi...

Python openpyxl:读写样式Excel一条龙,测试报表必备!

无论你是测试工程师、数据分析师,还是想批量导出Excel的自动化工作者,只需一个库openpyxl,即可高效搞定Excel的各种需求!为什么选择openpyxl?支持.xlsx格式...

Python + Pytest 测试框架——数据驱动

引言前面已经和大家介绍过Unittest测试框架的数据驱动框架DDT,以及其实现原理。今天和大家分享的是Pytest测试框架的数据驱动,Pytest测试框架的数据驱动是由pytest自...

这款开源测试神器,圆了我玩游戏不用动手的梦想

作者:HelloGitHub-Anthony一天我在公司用手机看游戏直播,同事问我在玩什么游戏?我和他说在看直播,他恍然大悟:原来如此,我还纳闷你玩游戏,咋不用动手呢。。。。一语惊醒梦中人:玩游戏不用...

Python单元测试框架对比(pycharm 单元测试)

一、核心框架对比特性unittest(标准库)pytest(主流第三方)nose2(unittest扩展)doctest(文档测试)安装Python标准库pipinstallpytestp...

利用机器学习,进行人体33个2D姿态检测与评估

前几期的文章,我们分享了人脸468点检测与人手28点检测的代码实现过程,本期我们进行人体姿态的检测与评估通过视频进行人体姿势估计在各种应用中起着至关重要的作用,例如量化体育锻炼,手语识别和全身手势控制...

取消回复欢迎 发表评论: