(标答出处: 鱼C论坛)
《零基础入门学习Python》
测试题:
使用try…except 搭配来捕获程序中的异常
try :
检测范围
except Exception [ as reason ] :
出现异常( Exception ) 后的处理代码
finally:
写出现异常后必须处理的代码
可以,可以和多个except搭配,来分别捕获不同的异常
例如:
在except后面用()把所有的异常括起来
例如:
因为这样做会使程序员不知道具体是出现哪个异常,进而影响改错,例如用户输入ctrl+c试图终止程序的会被理解为KeyboardInterrupt异常。
使用try…except…finally
try :
检测范围
except Exception [ as reason ] :
出现异常( Exception ) 后的处理代码
finally:
写出现异常后必须处理的代码
try :
for i in range (3):
for j in range(3):
if i == 2 :
raise KeyboardInterrupt
print (i,j)
except KeyboardInterrupt :
print ("退出了!")
动动手:
import random
count = random.randint(0,10)
print('----------------我爱鱼C工作室------------------')
temp = input("不妨猜一下我现在心里想的是哪个数字:")
try :
guess = int(temp)
except ( ValueError ) :
print ("输错啦,输入的不是整形数字!")
guess = count
while guess != count :
temp = input ("哎呀,猜错了,请重新输入把:")
try :
guess = int(temp)
except ( ValueError ) :
print ("输错啦,输入的不是整形数字!")
break
if guess == count :
print("卧槽,你是我心里的蛔虫吗?!")
print("哼,猜中了没奖励!")
else :
if guess > count:
print("哥,大了,大了~~~")
else :
print ("嘿,小了,小了~~~")
print("你猜错啦,猜的太小啦!")
print("游戏结束^_^")
import random
count = random.randint(0,10)
print('----------------我爱鱼C工作室------------------')
temp = input("不妨猜一下我现在心里想的是哪个数字:")
try :
guess = int(temp)
except ( ValueError , EOFError , KeyboardInterrupt ) :
print ("输错啦,输入的不是整形数字!")
guess = count
while guess != count :
temp = input ("哎呀,猜错了,请重新输入把:")
try :
guess = int(temp)
except ( ValueError , EOFError , KeyboardInterrupt ) :
print ("输错啦,输入的不是整形数字!")
break
if guess == count :
print("卧槽,你是我心里的蛔虫吗?!")
print("哼,猜中了没奖励!")
else :
if guess > count:
print("哥,大了,大了~~~")
else :
print ("嘿,小了,小了~~~")
print("你猜错啦,猜的太小啦!")
print("游戏结束^_^")
import random
def int_input(num) :
temp = input ( num )
try :
count = int(temp)
except ( ValueError , EOFError , KeyboardInterrupt ) :
print ("出错,您输入的不是整数!")
int_input("请输入一个整数:")
int_input("请输入一个整数:")
运行结果:
会出现如下错误: 因为你尝试去关闭一个没有打开的文件
try :
f = open ('My_File.txt') #当前文件夹中并不存在存在“My_File.txt”这个文件T_T
except OSError as reason :
print ("出错啦:" + str (reason))
finally :
if 'f' in locals() : #如果文件对象变量保存于当前局部变量符号的话,说明打开成功
f.close