Python课堂16——异常查找及处理
文章目录
- 前言
- 一、异常是什么?
- 二、异常处理
- 1. 根据提示
- 2. 捕获异常
- 3.抛出异常——raise
- 4.应用场景
- 总结
前言
我们在日常编写代码的时候,难免会遇到一些不可控的错误,这无疑会导致程序的终止,大大降低了程序的实用性,那么我们如何能优化这种情况呢?接下俩就让我们来详细了解一下吧!
一、异常是什么?
在Python中,异常是指在程序执行过程中出现的错误或意外情况。当Python解释器遇到异常时,会中断当前的执行流程,并尝试寻找异常处理程序来处理异常。如果找不到合适的异常处理程序,程序将终止并打印出错误信息。
分类
-
语法错误:
syntaxerror:代码不符合Python语法规定
ZeroDivisionError:除数为0
KeyError:字典中不存在这个键
AttributeError:对象没有这个属性
TypeError:类型错误,传入的类型不匹配
ImportError:无法引入模块或包,基本上是路径问题或名称错误 -
逻辑错误
nameerror:使用一个还没有被定义的变量
indexerror:下标/索引超出范围
IOError:输入/输出操作错误,基本上是无法打开文件(比如你要读的文件不存在)
ValueError:传入的值有误
二、异常处理
1. 根据提示
traceback找出错误点,并改正
xxxError:会显示异常的类型,以及具体的提示
2. 捕获异常
要保证程序的容错性和可靠性,遇到错误不直接崩溃,而是有对应的异常机制处理
- 捕获异常一
语法:
try:
被检测的代码块
except 异常类型 as e:
检测到异常要执行的代码块
代码如下:
a = int(input('请输入第一个数字:'))
b = int(input('请输入第二个数字:'))
try:print(a/b)
except ZeroDivisionError as error:print(error)print('您输入的数据有误!')
# 执行的原理:执行try里的子代码块,如果字代码块没有触发异常,直接跳过except语句,try语句执行完毕
# 如果执行try发生异常,则跳过异常语句,执行except语句,except和指定的异常类型进行匹配,匹配成功就执行except代码,如果匹配不成功,异常没有捕获到,输出错误。
- 捕获异常二
try检测的代码块出现了两个或多个异常,可以用多个except进行匹配,或者把多个异常类型放在一个元组内,用一个except匹配
代码如下:
try:a = int(input('请输入第一个数字:'))b = int(input('请输入第二个数字:'))print(a / b)
except (ZeroDivisionError, ValueError) as error:print(error)print('您输入的数据有误!')
except ValueError as e:print(e) # invalid literal for int() with base 10: '10.0'
- 捕获异常三
程序在执行出现错误的时候,出现逻辑错误,不能确定具体是什么逻辑错误,万能异常 Exception 代表所有异常类型
作用:能捕获到大多数的异常,但是不能捕获语法错误
代码如下:
try:li = [1, 2, 3]print(li[0])a = int(input('请输入第一个数字:'))b = int(input('请输入第二个数字:'))print(a / b)
except Exception as e:print(e)
注意Exception的首字母必须要大写,不能捕获语法异常
- 捕获异常四
当检测的代码块没有出现任何异常的时候,执行else代码
代码如下:
try:name = 'a'print(name)print(int('10'))print(float(10.14))
except Exception as e:print(e)
else:print('程序没有出现错误')
- 捕获异常五
不管有没有检测到异常,都会执行 finally
代码如下:
'''语法:try:被检测的代码块except 异常类型 as e:检测到异常要执行的代码块else:没有捕获到异常执行的代码finally:无论是否有异常都会执行注意:finally和try可以单独连用作用:回收资源的操作,关闭已经打开的文件,关闭打开的数据库
'''try:name = 'a'print(name)print(int('10'))print(float(10.14))
except Exception as e:print(e)
else:print('程序没有出现错误')
finally:print('不管是否异常都会执行') # 一般做一些文件的关闭
3.抛出异常——raise
前面都是不符合Python解释器的语法,由解释器抛出异常。我们也可以自己定义异常,在满足什么条件下主动抛出。
语法:
1.创建Exception(‘错误的信息’)
2.raise抛出即可
e = Exception(‘错误’)
raise e
代码如下:
def login():count = 0while True:username = input('请输入账号')code = input('请输入验证码')if code == '123456':count += 1if count == 5:e = Exception('验证码输入错误超过五次,请一分钟后重试')raise e
try:login()
except Exception as e:print(e)
4.应用场景
- 写程序:打开了一个文件,对文件执行读写操作,过程中遇到一些逻辑错误,引发了异常,通过try except进行捕获,注意写程序:打开了一个文件,对文件执行读写操作,过程中遇到一些逻辑错误,引发了异常,通过try except进行捕获。
代码如下:
def func():li = []return li[0]
func()
try:func()
except Exception as e:print(e)# 函数:处理某一个功能的代码,异常捕获是给该函数唯一增加的功能
- 利用异常捕获来检查和简写代码
代码如下:
def func():while True:name = input('请输入账号名:')if len(name) < 10: # 正确逻辑if name == 'Abner':print('账号名输入正确')breakelse:print('请重新输入')else:print('请重新输入')def func():while True:name = input('请输入账号名:')if len(name) > 10:print('请重新输入')continueif name == 'Abner':print('账号名输入正确')break
总结
本节主要讲述了写代码过程中出现的错误以及解决方法,这就为我们之后的代码编写中提供了一个新的思路。
美好的一天,上帝不会就这样给你,需要自己去创造。
相关文章:
Python课堂16——异常查找及处理
文章目录 前言一、异常是什么?二、异常处理1. 根据提示2. 捕获异常3.抛出异常——raise4.应用场景 总结 前言 我们在日常编写代码的时候,难免会遇到一些不可控的错误,这无疑会导致程序的终止,大大降低了程序的实用性,…...
任务书参考答案-模块1任务一
1.根据网络拓扑图所示,按照IP 地址规划表,对防火墙的名称、各接口IP 地址进行配置。共8 分,每错1 处(行)扣1 分,扣完为止。地址、安全域、接口(状态为UP)、名称都正确。 2.根据网络拓扑图所示,按照IP 地址规划表,对三层交换机的名称进行配置,创建VLAN 并将相应接口划…...
2023最新盲盒交友脱单系统源码
源码获取方式 搜一搜:万能工具箱合集 点击资源库直接进去获取源码即可 如果没看到就是待更新,会陆续更新上 或 源码软件库 最新盲盒交友脱单系统源码,纸条广场,单独抽取/连抽/同城抽取/高质量盒子 新增功能包括心动推荐ÿ…...
Half-Band filter(半带滤波器)
Half-Band filter 引言正文symmetric half-band filtersamplitude half-band filterspower half-band filters引言 今天看文章的时候遇到了一个名词,Half-Band filter,中文名称半带滤波器,特来记录一下。 正文 假设我们通过采样获取到的信号带宽为 f s f_s...
2024年环境安全科学、材料工程与制造国际学术会议(ESSMEM2024)
【EI检索】2024年环境安全科学、材料工程与制造国际学术会议(ESSMEM2024) 会议简介 我们很高兴邀请您参加将在三亚举行的2024年环境安全科学、材料工程和制造国际学术会议(ESSMEM 2024)。 ESSMEM2024将汇集世界各国和地区的研究人员&…...
常用路径规划算法简介及python程序
目录 1、前言2、D*算法2.1简介2.2优缺点2.2.1 优点2.2.2 缺点 2.3 python程序 3、A*算法3.1 优缺点:3.1.1 优点:3.1.2 缺点: 3.2 python程序 4、人工势场算法4.1优缺点4.1.1优点:4.1.2缺点: 4.2 python程序 5、Dijkstr…...
计算x的对数math.log(x)math.log(x, a)math.log2(x)math.log10(x)
【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算x的对数 math.log(x) math.log(x, a) math.log2(x) math.log10(x) [太阳]选择题 以下说法错误的是() import math print("【执行】e math.exp(1)") e …...
Golin 弱口令/漏洞/扫描/等保/基线核查的快速安全检查小工具
下载地址: 链接:https://pan.quark.cn/s/db6afba6de1f 主要功能 主机存活探测、漏洞扫描、子域名扫描、端口扫描、各类服务数据库爆破、poc扫描、xss扫描、webtitle探测、web指纹识别、web敏感信息泄露、web目录浏览、web文件下载、等保安全风险问题风险…...
【JavaEE】_HttpServlet类
目录 1. init方法 2. destory方法 3. service方法 4. servlet生命周期 前文已经提及到:servlet是tomcat提供的,用于操作HTTP协议的一组API,可以将这组API理解为HTTP服务器的框架; 编写一个servlet程序,往往都要继…...
11-pytorch-使用自己的数据集测试
b站小土堆pytorch教程学习笔记 import torch import torchvision from PIL import Image from torch import nnimg_path ../imgs/dog.png imageImage.open(img_path) print(image) # imageimage.convert(RGB)transformtorchvision.transforms.Compose([torchvision.transforms.…...
数据安全之路:深入了解MySQL的行锁与表锁机制
欢迎来到我的博客,代码的世界里,每一行都是一个故事 数据安全之路:深入了解MySQL的行锁与表锁机制 前言基础innodb中锁与索引的关系如何避免表锁 前言 在当今数据密集的应用中,数据库锁成为了确保数据一致性和并发操作的关键工具…...
【深度学习】Pytorch 教程(十二):PyTorch数据结构:4、张量操作(3):张量修改操作(拆分、拓展、修改)
文章目录 一、前言二、实验环境三、PyTorch数据结构1、Tensor(张量)1. 维度(Dimensions)2. 数据类型(Data Types)3. GPU加速(GPU Acceleration) 2、张量的数学运算1. 向量运算2. 矩阵…...
适合新手博主站长使用的免费响应式WordPress博客主题JianYue
这款JianYue主题之所以命名为 JianYue,意思就是简单而不简约的。是根据Blogs主题优化而成,剔除了一些不必要的功能及排版,仅保留一种博客布局,让新手站长能够快速手上WordPress。可以说这款主题比较适合新手博主站长使用ÿ…...
FPGA OSERDESE2
Output Parallel-to-Serial Logic Resources (OSERDESE2) OSERDESE2 在Xilinx 7 系列器件是一款专用的并行至串行转换器,具有特定的时钟和逻辑资源,旨在促进高速源同步接口的实现。每个OSERDESE2模块都包括一个专用的数据串行器和 3 状态控制。数据和 3 态串行器都可以在 SD…...
如何卸载Erlang以及RabbitMQ
参考以下两篇文章 https://blog.csdn.net/m0_49605579/article/details/130196536 Windows如何完全卸载RabbitMQ和Erlang_删除注册表hkey_local_machine\software\ericsson\erlang\e-CSDN博客 首先我是按照链接一的操作进行了卸载,但是Erlang的安装目录一直删除不…...
ros自定义action记录
文章目录 自定义action1. 定义action文件2. 修改 package.xml3. 修改 CMakeLists.txt4. 运行 catkin build5. simple_action_server.py6. simple_action_client.py 测试 自定义action ros 版本:kinetic 自定义test包的文件结构如下 |-- test | |-- CMakeLists.t…...
挑战30天学完Python:Day18 正则表达式
📘 Day 18 🎉 本系列为Python基础学习,原稿来源于 30-Days-Of-Python 英文项目,大奇主要是对其本地化翻译、逐条验证和补充,想通过30天完成正儿八经的系统化实践。此系列适合零基础同学,或仅了解Python一点…...
力扣● 343. 整数拆分 ● 96.不同的二叉搜索树
● 343. 整数拆分 想不到,要勇于看题解。 关键在于理解递推公式。 1、DP数组及其下标的含义:dp[i]是分解i这个数得到的最大的乘积。 2、DP数组如何初始化:dp[0]和dp[1]都没意义,所以直接不赋值,初始化dp[2]1即可。…...
游戏同步+游戏中的网络模块
原文链接:游戏开发入门(九)游戏同步技术_游戏数据同步机制流程怎么开发-CSDN博客 游戏开发入门(十)游戏中的网络模块_游戏开发组网-CSDN博客 3.同步技术的基本常识: a.同步给谁?某个用户&…...
【03】逆序数组
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、逆序函数是什么? 二、逆序函数原码 1.直接逆序 2.创建临时数组逆序 三、结言 💥一、逆序函数是什么? 示例:输入1 4 …...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
