Python——第五章:处理异常try、except、else、finally
处理异常try
和 except
在 Python 中,try
和 except
语句用于处理异常(错误)。通过使用这两个关键字,你可以编写代码来捕获和处理可能发生的异常,以保持程序的稳定性。
try:
try 代码
except 错误1 as 变量1:
except1代码
except 错误2 as 变量2:
except2代码
except 错误3 as 变量3:
except3代码
else:
没有异常发生时执行的代码
finally:
始终会执行的代码
try
块包含可能引发异常的代码。如果发生异常,程序将跳转到except
块,执行异常处理代码。except
块可以存在多个,你可以使用多个except
块来处理不同类型的异常:except
块会进行判断,如果符合其中某个except
块的错误模式,则执行某个except
块下的内容- 为了把所有的异常都接到,通常会使用
except Exception as e:
来收尾(因为所有的异常,都是Exception),你可以使用变量(例如e
)来获取异常对象的信息,并可以返回输出。 else
块中的代码将在try
块中的代码没有引发异常时执行。finally
块中的代码始终都会执行,无论是否发生异常。
try:
# 代码块,可能引发异常的地方
result = 10 / 0 # 除数不能为0
open("hehehehehehehe", mode="r").read() # 不存在的文件
lst = [] # 空列表不能被迭代
lst.__iter__().__next__()
except ZeroDivisionError:
# 处理除以零的异常
print('除数不能为0!')
except Exception as e:
# 异常处理块,处理发生的异常
print(f'有异常发生: {e}')
else:
# 没有异常发生时执行的代码
print(f'计算结果为: {result}')
finally:
# 始终会执行的代码
print("执行完记得关闭数据库!!!")
抛出异常raise
raise Exception
让程序主动抛出异常,比简单的print()
的提示强硬很多
def func(a, b):
if type(a) == int and type(b) == int:
return a + b
else:
# 程序会主动抛出异常,谁调用该函数,谁接收该异常
raise Exception("你提交的不是int类型,func行数如法进行计算") # print("a和b必须为数字")
func("呵呵", 3)
- 谁调用该函数,谁接收该异常
- 架构师经常会做主动抛出异常的操作,会对项目有较强的掌控力。