python:pt、else、finally异常处理语句
异常:代码在运⾏过程中出现的错误,被称为异常。(不包括语法错误)
在python中,⼀个py⽂件中的代码,正常情况下,是按照顺序执⾏的,但是当遇到异常时,会停⽌程序的运⾏,如果不想让程序停⽌并且继续运⾏,那么就需要使⽤try…except来捕捉异常,保证代码能够顺畅执⾏。
下⾯举⼀个简单的例⼦来帮助理解try…except语句的特点:
我们有下⾯⼀段代码:
# 在控制台⾥,需要输⼊⼀个数字,并转化为int类型。使⽤int转换是因为input函数接收到的默认都是字符串类型。
one_num =int(input("请输⼊⼀个数字:"))
# 打印输⼊的数字
print("输⼊的数字是:{}".format(one_num))
print("继续执⾏代码")
那么当我输⼊的是⼀个字母时,程序执⾏到第⼀⾏进⾏int转换时抛出异常,程序执⾏中断,后⾯的代码不会再继续执⾏了。
如果我们使⽤try…except来处理:
try:
# 在控制台⾥,需要输⼊⼀个数字,并转化为int类型。使⽤int转换是因为input函数接收到的默认都是字符串类型。
one_num =int(input("请输⼊⼀个数字:"))
# 打印输⼊的数字
print("输⼊的数字是:{}".format(one_num))
except:
print("当try⾥⾯的代码出现异常时,执⾏except中的代码")
print("继续执⾏代码")
所以在使⽤try…except处理后,当输⼊的内容不是数字时,会执⾏except中的语句,并继续往下执⾏代码:
当输⼊内容为数字时,执⾏完try语句中的代码后,跳过except中的代码,继续往下执⾏:
所以,通过以上的例⼦可以看出,try…except语句的特点是:
1.当try语句块中的代码出现异常时,不会中断程序的执⾏;
2.当try语句块中的代码出现异常时,不再继续往下执⾏try语句块中的代码,⽽是跳转到except语句块执⾏代码;
3.当try语句块中的代码⽆异常时,执⾏完try语句块中的代码后,会跳过except语句块,继续往下执⾏程序。
另外,try…except语句中,为了更精确的处理异常信息,可以使⽤python中的builtins.py中预置的具体错误⽅法处理。
builtins.py⽂件中,有很多已经内置好的错误处理⽅法,我们可以通过这个⽅法,处理具体的异常。⽐
如,我们有下⾯⼀段代码:
try:
# 在控制台⾥,需要输⼊⼀个数字,并转化为int类型。使⽤int转换是因为input函数接收到的默认都是字符串类型。
one_num =int(input("请输⼊⼀个数字:"))
# 打印输⼊的数字
print("输⼊的数字是:{}".format(one_num))
num =1/one_num # 1除以输⼊的数字
print("try中代码结束")
python的try和except用法except ValueError:
print("当try⾥⾯的代码出现值异常时,执⾏此代码")
except ZeroDivisionError:
print("当try⾥出现除数为0的异常时,执⾏此代码")
print("继续执⾏代码")
当我们输⼊的是⾮数字时,one_num = int(input(“请输⼊⼀个数字:”))这⼀⾏代码会出现值异常,那么此时,try语句块后⾯的语句不会继续执⾏,⽽是跳转到except ValueError语句块中继续执⾏,当except ValueError代码块中的代码执⾏完毕后,会跳过except ZeroDivisionError,继续往后执⾏:
当我们输⼊的是数字0时,则在执⾏num = 1/one_num会出现除数为0的错误,此时try语句块后⾯的语句不会继续执⾏,⽽是跳转到except ZeroDivisionError语句块中继续执⾏:
所以,通过上⾯的代码例⼦可以看出,当有多个except语句时,执⾏其中⼀个except之后,其他的except就不会再被执⾏了。
但是通过上⾯的例⼦也可以看出,如果有很多种异常时,则需要写很多个except语句,这会使代码看起来冗长、可读性差。所以,在python中,往往会在同⼀个except中,使⽤多个异常:
try:
# 在控制台⾥,需要输⼊⼀个数字,并转化为int类型。使⽤int转换是因为input函数接收到的默认都是字符串类型。
one_num =int(input("请输⼊⼀个数字:"))
# 打印输⼊的数字
print("输⼊的数字是:{}".format(one_num))
num =1/one_num # 1除以输⼊的数字
print("try中代码结束")
except(ValueError, ZeroDivisionError):# ⼀个except中,处理了值异常和除数为0的异常
print("当try⾥⾯的代码出现值异常、或者除数为0的异常时,执⾏此代码")
print("继续执⾏代码")
上⾯代码中,当输⼊⾮数字时,会执⾏except中的代码:
输⼊数字为0时,也会执⾏except中的代码:
但是,有时候,有⼀些⽆法预估的错误信息,如果我们使⽤具体的异常⽅法捕获不到,还是会导致代码中断,⽐如:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论