当前位置: 首页 > 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 ")   #异常时要做的事

输出结果:

http://www.lryc.cn/news/162968.html

相关文章:

  • 如何解决iOS打包工具AppUploader登录权限问题?
  • leetcode分类刷题:基于数组的双指针(四、小的移动)
  • eclipse
  • VIT中的einops包详解
  • 目标检测笔记(十三): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程))
  • 【数据结构】设计环形队列
  • 无涯教程-JavaScript - COUPDAYSNC函数
  • python 随机生成emoji表情
  • python关闭指定进程以excel为例
  • 前后端中的异步和事件机制 | 前后端开发
  • 设计模式篇(Java):装饰者模式
  • Spark【RDD编程(三)键值对RDD】
  • 从板凳围观到玩转行家:Moonbeam投票委托如何让普通用户一同参与
  • SpringMVC的文件上传文件下载多文件上传---详细介绍
  • Spark【RDD编程(四)综合案例】
  • Golang报错mixture of field:value and value initializers
  • 【网络教程】记一次使用Docker手动搭建BT宝塔面板的全过程(包含问题解决如:宝塔面板无法开启防火墙,ssh,nginx等)
  • 【大虾送书第九期】速学Linux:系统应用从入门到精通
  • docker相关命令
  • 【Redis】4、rsync远程同步
  • 无服务架构--Serverless
  • 2023-09-07 LeetCode每日一题(修车的最少时间)
  • 数据挖掘实验-主成分分析与类特征化
  • 70. 爬楼梯 (进阶),322. 零钱兑换,279.完全平方数
  • Apache Doris 2.0 如何实现导入性能提升 2-8 倍
  • RabbitMQ: topic 结构
  • 信息系统项目管理教程(第4版):第二章 信息技术及其发展
  • 有哪些适合初学者的编程语言?
  • uni-app动态tabBar,根据不同用户展示不同的tabBar
  • 手写Spring:第6章-资源加载器解析文件注册对象