try/except和try/finally
用法:用于python中的异常处理,在写程序的时候使用异常处理会增加程序的稳定性,默认情况下,如果没有使用异常处理而程序发生了错误,脚本文件在执行过程中所产生的异常消息会自动发送给程序调用端,如python shell,python shell 对异常消息的默认处理则是终止程序的执行并打印具体的出错信息。这就是在python shell中执行程序错误后出现的出错打印信息的由来。
try/except
try:
代码块
except 异常类型:
语句
except:
语句
else:
语句
先执行try后的语句,如果发生异常,才执行except,从第一个except后开始寻找,如果找到了对应的异常类型则执行except 该异常类型后的语句,如果没有找到,则执行except,except是可选项,如果没有提供,则异常将会提交给python进行默认处理,终止应用程序并打印提示信息,如果在try中没有出现异常则会直接进入else(如果存在)。
try/finally
try:
代码块
finally:
语句
这里不论try中是否发生异常,finally一定会执行。
try/except和try/finally合用
try:
代码块
except 异常类型:
语句
except:
语句
else:
语句
finally:
语句
**注意:**
1.合用的时候顺序一定是:try–except 异常类型–except–else–finally
2.else和finally是可有可无的,如果有finally一定在最后
3.except 异常类型一定在except之前,except一定在else之前,except是存在else的前提条件
实例:
//温度转换代码
while True:
try:
TempStr=input("请输入带有符号的温度值:")
while(TempStr[-1] not in ['F','f','C','c']):
print("输入格式有误,应该输入整数后加字母f/F或c/C")
TempStr=input("请输入带有符号的温度值:")
finally:
if TempStr[-1] in ['F','f']:
C=(eval(TempStr[0:-1])-32)/1.8
print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ['C','C']:
F=1.8*eval(TempStr[0:-1])+32
print("转换后的温度是{:.2f}F".format(F))
break
//猜数游戏
import random
while True:
try:
k=random.randint(0,100)
x=int(input("请输入0—100之间的整数:"))
tem=0
while x!=k:
tem+=1
if(x>k):
print("遗憾,太大了")
else:
print("遗憾,太小了")
x=eval(input("请输入0—100之间的整数:"))
except:
print("输入内容必须为整数!")
else:
print("预测{}次,你猜中了".format(tem))
break