当前位置: 首页 > news >正文

Python异常处理——走BUG的路,让BUG无处可走

作者:Insist--

个人主页:insist--个人主页

本文专栏:Python专栏

专栏介绍:本专栏为免费专栏,并且会持续更新python基础知识,欢迎各位订阅关注。

目录

一、了解python异常

1、BUG 单词的由来

2、什么是异常

二、常见的Python异常类型

三、如何捕获和处理异常

1、常规捕捉语法

2、捕捉指定异常

3、捕捉多个指定的异常


前言

在本文中,我将介绍Python异常的基础知识,包括了解python异常,常见的异常类型,以及如何捕获和处理异常。


一、了解python异常

Python异常处理是一种非常重要的编程技巧,它可以让你在编写代码时避免出现许多问题。如果程序在运行时发生报错的情况(例如:除以零、访问不存在的变量等等)。Python会引发异常并停止当前代码的执行。如果没有适当的处理措施,程序将终止并显示“Traceback”信息。

1、BUG 单词的由来

想要了解BUG 单词的由来,就要追溯到世界第一台万用计算机(马克二型)使用时遇到的一个故障,1945年9月9日,马克二型计算机无法正常工作了,技术人员尝试了很多办法,都没有解决问题,最后在70号继电器上找到了问题。技术人员观察了许久,发现是一只飞蛾导致的无法正常工作,将飞蛾抓出来后,用透明胶布贴到“事件记录本”中,并注明了“第一个发现虫子的实例”,在此之后,便有 BUG 这个单词。

2、什么是异常

当程序在运行时出现错误时,Python就无法执行错误之后的代码,同时会出现报错,这就是“异常”,也就是我们常说的BUG,异常可以是由代码错误导致的,也可以是由外部因素引起的。那么我们有没有办法在程序出现异常前,将他解决掉?当然有,我们可以使用 try  +  except 语句块来捕获和处理异常。


二、常见的Python异常类型

在了解捕获和处理异常之前,我们先来看看这些常见的异常类型

1、ZeroDivisionError:当我们将0作为被除数时,会发生ZeroDivisionError报错。

0bccdc7f45c645d9893a86394e12eeae.png

例如:

print(1 / 0)

解释:上面已经说过 ZeroDivisionError: 这种情况发生在将0作为被除数时。在数学中,0时不可以做成被除数的,所以 Python 会显示 ZeroDivisionError 异常。

2、ValueError: 当操作或函数适用于值超出范围时,会发生ValueError报错。

d64d2252c68c469681841601ee5fec31.png

例如:

result = int("insist")

解释:V比如上面的代码,我们尝试将字符串“insist”转换为整数,但是我们提供的字符串不能转换为整数。所以发生了ValueError报错。

3、KeyError: 当使用字典中不存在的键时会发生KeyError报错。

bea04763efa54f10bf510015199e0188.png

例如:

my_dict = {1:2}
value = my_dict["insist"]

解释:如上代码,我们尝试从字典中获取一个“”insist”(不存在)键时,会发生此异常。因为在字典中我们并没有定义“insist”,所以发生了 KeyError 报错。 

4、IndexError:当访问列表或其他支持索引的对象中不存在的索引时,会发生 IndexError 报错。

2cef6201d6c64589b7c12fe3b6637155.png 例如:

my_list = [1,2,3]
value = my_list[4]

解释:如上代码,我们尝试试图访问一个只有三个元素的列表的第四个元素。会发生此报错。


三、如何捕获和处理异常

在Python编程语言中,我们可以使用 try  +  except 语句块来捕获和处理异常。try语句块内写上可能引发异常的代码,而except语句块写上当异常发生时要执行的代码

1、常规捕捉语法

以下是一个简单的示例:

try:result = 1 / 0                  # 可能引发异常的代码
except :print("发生错误啦")               # 当除以零异常发生时要执行的代码

输出结果:

c16a7e91ba1745679fc4b8f9ea5aa19f.png

在上面的示例中,当除以零异常发生时,程序将执行except语句块中的代码并打印出“发生错误啦”。如果没有异常发生,该代码块将不会执行。

2、捕捉指定异常

以下是一个简单的示例:

try:result = 1 / 0                  # 可能引发异常的代码
except ZeroDivisionError:print("捕捉到了 ZeroDivisionError 错误")               # 当除以零异常发生时要执行的代码

输出结果:

在这个例子中,我们指定了一个异常 ZeroDivisionError ,当出现此异常时会正常输出“发生错误啦”,如果没有发生我们指定的错误,那么程序会发生报错并停止程序运行。

3、捕捉多个指定的异常

以下是一个简单的示例:

try:x = 1 / 0         # 尝试一些可能会引发异常的代码
except (ZeroDivisionError, TypeError):print("捕捉到了 ZeroDivisionError 或 TypeError ")   #异常时要做的事

输出结果:

相关文章:

Python异常处理——走BUG的路,让BUG无处可走

作者:Insist-- 个人主页:insist--个人主页 本文专栏:Python专栏 专栏介绍:本专栏为免费专栏,并且会持续更新python基础知识,欢迎各位订阅关注。 目录 一、了解python异常 1、BUG 单词的由来 2、什么是异…...

如何解决iOS打包工具AppUploader登录权限问题?

摘要:在iOS技术博主的指导下,了解如何解决使用AppUploader打包时出现的权限问题。本文将深入探讨此问题,为你提供详细的解决方案。 引言: 作为iOS开发者,我们经常需要使用工具来打包和上传应用程序。AppUploader 是一…...

leetcode分类刷题:基于数组的双指针(四、小的移动)

leetcode上有些题是真的太难了,正常读题之后完全想不到要用双指针来求解,本次博客总结的题目是双指针初始时位于数组两端,哪个元素小就移动哪个指针 11. 盛最多水的容器 1、这道题放在42. 接雨水的相似题目里,可能是因为它们都有相…...

eclipse

快捷键 F4: 继承树 F3: 查看变量、方法、类的定义, 跳到光标所在标识符的定义代码。(Ctrl左键) CtrlShiftG: 在工作空间中查找引用了光标所在标识符的位置。与F3相反的快捷键。当按类定义进行阅读时,当前类方法或者函数在被哪些地方调用 controlTAB: 切…...

VIT中的einops包详解

‘’‘einops有三个常用方法:rearrange,repeat,reduce’‘’ rearrange的操作相当于转置 rearrange(image,‘h w c -> w h c’) 高和宽转置 path ../data/cat_and_mouse.jpg image cv2.imread(path) h,w,c image.shape # shape第一个值是h,第二个是w image…...

目标检测笔记(十三): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程))

文章目录 一、目标检测介绍二、YOLOv5介绍2.1 和以往版本的区别 三、代码获取3.1 视频代码介绍 四、环境搭建五、数据集准备5.1 数据集转换5.2 数据集验证 六、模型训练七、模型验证八、模型测试九、评价指标 一、目标检测介绍 目标检测(Object Detection&#xff…...

【数据结构】设计环形队列

环形队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 环形队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列…...

无涯教程-JavaScript - COUPDAYSNC函数

描述 COUPDAYSNC函数返回从结算日期到下一个息票日期的天数。 语法 COUPDAYSNC (settlement, maturity, frequency, [basis])争论 Argument描述Required/OptionalSettlement 证券的结算日期。 证券结算日期是指在发行日期之后将证券交易给买方的日期。 RequiredMaturity 证…...

python 随机生成emoji表情

问答板块觉得比较有意思的问题 当时搜了些网上的发现基本都不能用,不知道是版本的问题还是咋的就开始自己研究 python随机生成emoji 问题的产生解决官网文档数据类型实现思路实现前提:具体实现: 其他常见用法插入 Emoji 表情:解析…...

python关闭指定进程以excel为例

先说下环境: Excel版本: Python2.7.13和Python3.10.4并存。 2、打开两个excel工作簿 看进程是这样的: 3、用python编程kill进程 # -*- coding: utf-8 -*- import os proc_nameEXCEL.EXE if __name__ __main__:os.system(taskkill /im {} /…...

前后端中的异步和事件机制 | 前后端开发

前言 在前后端程序设计开发工作中,小伙伴们一定都接触过事件、异步这些概念。出现这些概念的原因之一是,我们的代码在执行过程中所涉及的逻辑在不同的场合下执行时间的期望是各不相同的。为了尽量做到充分利用CPU等资源做尽可能多的事,免不了…...

设计模式篇(Java):装饰者模式

👨‍💻本文专栏:设计模式篇-装饰者模式 👨‍💻本文简述:装饰者模式的详解以及jdk中的应用 👨‍💻上一篇文章: 设计模式篇(Java):桥接模式 👨‍&am…...

Spark【RDD编程(三)键值对RDD】

简介 键值对 RDD 就是每个RDD的元素都是 (key,value)类型的键值对,是一种常见的 RDD,可以应用于很多场景。 因为毕竟通过我们之前Hadoop的学习中,我们就可以看到对数据的处理,基本都是以…...

从板凳围观到玩转行家:Moonbeam投票委托如何让普通用户一同参与

今年5月,Moonbeam发起了一项社区链上治理中投票委托反馈的调查。187位社区成员参与了这项调查,调查发现受访者对治理感兴趣,增加参与度只需要进行一些调整,即更简化的投票流程。 治理和去中心化是Web3的核心,随着Moon…...

SpringMVC的文件上传文件下载多文件上传---详细介绍

目录 前言: 一,文件上传 1.1 添加依赖 1.2 配置文件上传解析器 1.3 表单设置 1.4 文件上传的实现 二,文件下载 controller层 前端jsp 三,多文件上传 Controller层 运行 前言: Spring MVC 是一个基于 Java …...

Spark【RDD编程(四)综合案例】

案例1-TOP N个数据的值 输入数据: 1,1768,50,155 2,1218,600,211 3,2239,788,242 4,3101,28,599 5,4899,290,129 6,3110,54,1201 7,4436,259,877 8,2369,7890,27 处理代码: def main(args: Array[String]): Unit {//创建SparkContext对象val conf…...

Golang报错mixture of field:value and value initializers

Golang报错mixture of field:value and value initializers 这个错误跟编程习惯(模式)有关,都知道golang 语言的编程与java /python 以及其他的编程语言相似 ,一通百通,易学万卷书。 编程中同一个结构中要保持唯一模…...

【网络教程】记一次使用Docker手动搭建BT宝塔面板的全过程(包含问题解决如:宝塔面板无法开启防火墙,ssh,nginx等)

文章目录 准备安装安装宝塔面板开启ssh和修改ssh的密码导出镜像问题解决宝塔面板无法开启防火墙无法启动ssh设置密码nginx安装失败设置开机启动相关服务准备 演示的系统环境:Ubuntu 22.04.3 LTS更新安装/升级docker到最新版本升级docker相关命令如下# 更新软件包列表并自动升级…...

【大虾送书第九期】速学Linux:系统应用从入门到精通

目录 🍭写在前面 🍭为什么学习Linux系统 🍭Linux系统的应用领域 🍬1.Linux在服务器的应用 🍬2.嵌入式Linux的应用 🍬3.桌面Linux的应用 🍭Linux的版本选择 &a…...

docker相关命令

####### 帮助启动类命令 ########## 启动docker systemctl start docker 停止docker systemctl stop docker 重启docker systemctl restart docker 查看docker状态 systemctl status docker 开机启动 systemctl enable docker 查看docker概要信息 docker info 查看…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...