当前位置: 首页 > 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 查看…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

Windows 下端口占用排查与释放全攻略

Windows 下端口占用排查与释放全攻略​ 在开发和运维过程中&#xff0c;经常会遇到端口被占用的问题&#xff08;如 8080、3306 等常用端口&#xff09;。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口&#xff0c;帮助你高效解决此类问题。​ 一、准…...

Cursor AI 账号纯净度维护与高效注册指南

Cursor AI 账号纯净度维护与高效注册指南&#xff1a;解决限制问题的实战方案 风车无限免费邮箱系统网页端使用说明|快速获取邮箱|cursor|windsurf|augment 问题背景 在成功解决 Cursor 环境配置问题后&#xff0c;许多开发者仍面临账号纯净度不足导致的限制问题。无论使用 16…...