作者:Insist--
个人主页:insist--个人主页
本文专栏:Python专栏
专栏介绍:本专栏为免费专栏,并且会持续更新python基础知识,欢迎各位订阅关注。
目录
一、了解python异常
1、BUG 单词的由来
2、什么是异常
二、常见的Python异常类型
三、如何捕获和处理异常
1、常规捕捉语法
2、捕捉指定异常
3、捕捉多个指定的异常
前言
在本文中,我将介绍Python异常的基础知识,包括了解python异常,常见的异常类型,以及如何捕获和处理异常。
Python异常处理是一种非常重要的编程技巧,它可以让你在编写代码时避免出现许多问题。如果程序在运行时发生报错的情况(例如:除以零、访问不存在的变量等等)。Python会引发异常并停止当前代码的执行。如果没有适当的处理措施,程序将终止并显示“Traceback”信息。
想要了解BUG 单词的由来,就要追溯到世界第一台万用计算机(马克二型)使用时遇到的一个故障,1945年9月9日,马克二型计算机无法正常工作了,技术人员尝试了很多办法,都没有解决问题,最后在70号继电器上找到了问题。技术人员观察了许久,发现是一只飞蛾导致的无法正常工作,将飞蛾抓出来后,用透明胶布贴到“事件记录本”中,并注明了“第一个发现虫子的实例”,在此之后,便有 BUG 这个单词。
当程序在运行时出现错误时,Python就无法执行错误之后的代码,同时会出现报错,这就是“异常”,也就是我们常说的BUG,异常可以是由代码错误导致的,也可以是由外部因素引起的。那么我们有没有办法在程序出现异常前,将他解决掉?当然有,我们可以使用 try + except 语句块来捕获和处理异常。
在了解捕获和处理异常之前,我们先来看看这些常见的异常类型
1、ZeroDivisionError:当我们将0作为被除数时,会发生ZeroDivisionError报错。
例如:
print(1 / 0)
解释:上面已经说过 ZeroDivisionError: 这种情况发生在将0作为被除数时。在数学中,0时不可以做成被除数的,所以 Python 会显示 ZeroDivisionError 异常。
2、ValueError: 当操作或函数适用于值超出范围时,会发生ValueError报错。
例如:
result = int("insist")
解释:V比如上面的代码,我们尝试将字符串“insist”转换为整数,但是我们提供的字符串不能转换为整数。所以发生了ValueError报错。
3、KeyError: 当使用字典中不存在的键时会发生KeyError报错。
例如:
my_dict = {1:2}
value = my_dict["insist"]
解释:如上代码,我们尝试从字典中获取一个“”insist”(不存在)键时,会发生此异常。因为在字典中我们并没有定义“insist”,所以发生了 KeyError 报错。
4、IndexError:当访问列表或其他支持索引的对象中不存在的索引时,会发生 IndexError 报错。
my_list = [1,2,3]
value = my_list[4]
解释:如上代码,我们尝试试图访问一个只有三个元素的列表的第四个元素。会发生此报错。
在Python编程语言中,我们可以使用 try + except 语句块来捕获和处理异常。try语句块内写上可能引发异常的代码,而except语句块写上当异常发生时要执行的代码。
以下是一个简单的示例:
try:
result = 1 / 0 # 可能引发异常的代码
except :
print("发生错误啦") # 当除以零异常发生时要执行的代码
输出结果:
在上面的示例中,当除以零异常发生时,程序将执行except语句块中的代码并打印出“发生错误啦”。如果没有异常发生,该代码块将不会执行。
以下是一个简单的示例:
try:
result = 1 / 0 # 可能引发异常的代码
except ZeroDivisionError:
print("捕捉到了 ZeroDivisionError 错误") # 当除以零异常发生时要执行的代码
输出结果:
在这个例子中,我们指定了一个异常 ZeroDivisionError ,当出现此异常时会正常输出“发生错误啦”,如果没有发生我们指定的错误,那么程序会发生报错并停止程序运行。
以下是一个简单的示例:
try:
x = 1 / 0 # 尝试一些可能会引发异常的代码
except (ZeroDivisionError, TypeError):
print("捕捉到了 ZeroDivisionError 或 TypeError ") #异常时要做的事
输出结果: