在Python中,异常处理是一种机制,用于处理程序运行过程中可能发生的错误或异常情况,来避免程序终止或产生不必要的错误信息。也就是说,目的是为了防止程序闪退,出错以后后续代码可以继续执行。
1.异常处理的关键字
try except finally else raise
2.异常处理的方法
try关键字下方缩进的代码块写上可能会出现错误的代码;except用来捕获异常类型,else是只有当没有出错时,下方缩进的代码块才会执行;finally是不管可能会出错的代码有没有出错,都会执行的程序代码;raise是抛出一个异常。
try有一个,except可以有多个。
多个except从上往下判断异常类型进行捕获,如果不是,则判断是否是下一个。
不知道错误类型是可以使用Exception,可以捕获所有异常,位于最后一个。
知道错误类型,可以精确找到错误,如值类型错误、找不到文件、索引越界、除数不能为0等。
3.使用案例
案例1:在try下方缩进的代码中,如果按照要求输入数字,类型转换时则不会出现错误;如果用户不小心输入的是字母,就会在字符串转整型时出错;所以这段程序是有可能会出错的,就要对这种异常进行捕获处理。
try:
input_str = input("输入一个数字")
# 输入的是数字,在将字符串转为数字时不会出错
input_int = int(input_str)
print("奇数" if input_int % 2 else "偶数")
print("正常执行")
except Exception as e:
print("出错,程序执行结束", e)
else:
# 没有出错执行
print("没有出错")
finally:
# 不管是否出错,都会执行
print("是否出错都会执行")
print("执行了")
#输入一个数字aa
#出错,程序执行结束 invalid literal for int() with base 10: 'aa'
#是否出错都会执行
#执行了
案例2:在读取文件时,有可能读取的文件是不存在的,没有进行异常处理,运行程序会直接报错,为了不影响后续代码的执行,就要对这种可能存在错误的代码进行异常捕获。
try:
with open("data.txt", "r") as f:
context = f.read()
print(context)
except Exception as e:
print("出错,程序执行结束", e)
else:
# 没有出错执行
print("没有出错")
finally:
# 不管是否出错,都会执行
print("是否出错都会执行")
print("执行了")
#出错,程序执行结束 [Errno 2] No such file or directory: 'data.txt'
#是否出错都会执行
#执行了
小结
在学习python的过程中,合理使用异常处理能够提高程序的稳定性和可靠性,使自身更好地理解和调试程序中的问题。