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 ")   #异常时要做的事

输出结果:

评论 87
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Insist--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值