零基础学习Python 作业 第33章
0.我们使用什么方法来处理程序中出现的异常?
try.......except搭配来捕获处理程序中出现的异常。
try:
print ('检查范围')
except Exception as reason:
print('报错信息是什么')
finally:
print('必须执行的语句')
1.一个try 语句可以和多个except 语句搭配吗?为什么?
可以,try语句块中可能出现多个类异常,利用多个except语句可以分别捕获并处理我们感兴趣的异常。
try:
f = open('我是111一个不存在的文档.txt')
sum = 1 + '1'
print(f.read())
f.close()
except IOError as reason:
print('文件出错了\n错误原因:'+ str(reason))
except TypeError as reason:
print('类型出错了\n错误原因:'+ str(reason))
捕获到第一个错误后,后续的的代码不在继续执行!
try:
f = open('我是111一个不存在的文档.txt')
sum = 1 + '1'
print(f.read())
f.close()
except (IOError,TypeError)IOError as reason:
print('文件出错了’)
2.你知道如何处理多类异常吗?
try:
sum = 1 + '1'
f = open('我是111一个不存在的文档.txt')
print(f.read())
f.close()
except (IOError,TypeError) as reason:
print('文件出错了:'+ str(reason))
3.except 后边如果不带任何异常类,Python 会捕获所有(try语句块内)的异常并统一处理,但小甲鱼不建议这么做,你知道为什么吗?
因为他会隐藏所有程序员未想到并且未做好准备处理的错误,不利于问题的定位
4.如果异常发生在成功打开文件后,Python调到except 语句执行,并没有执行关闭文件的命令,我们需要确保无论如何都需要关闭文件该怎么做?
可以使用finally 语句来实现,如果try语句块中没有出现任何运行时错误,会跳过except语句块执行finally 语句块的内容!
5.请回复以下代码中马赛克挡住的内容,使得程序执行后可以按要求输出
try:
for i in range(3):
for j in range(3):
if i == 2:
raise KeyboardInterrupt
print(i,j)
except KeyboardInterrupt:
print('退出了!')

try:
except:
1.语句一旦检查到异常,后续的语句不在执行
try:
except:
2.多个异常 可以一起写在 excepr(异常1,异常2)
try:
except:
finally:
3.finally 语句一定会被执行!
4.raise :使用raise 生成一个异常
try:
for i in range(3):
for j in range(3):
if i == 2:
raise KeyboardInterrupt
print(i,j)
except KeyboardInterrupt:
print('退出了!')
0:提高用户体验,对guess= int(temp)进件监控
import random
s = random.randint(0,10)
print(s)
try:
temp = raw_input("猜数字:")
guess = int(temp)
except (ValueError,EOFError,KeyboardInterrupt) as e:
print('输入错误:原因是:'+ str(e))
guess = int(temp)
while guess != s:
temp =raw_input('错了,重新输入吧:')
guess = int(temp)
if guess == s:
print('输入正确!')
else:
if guess > s:
print('大了')
else:
print('小了')
print('游戏结束!')
1.input()函数有可能参数两类异常:EOFError(文件末尾endoffile,当用户按下组合键ctrl+d 产生 和 Keyboardinterrupt(取消输入,当用户按下组合键ctrl+c产生
再次修改上边代码,捕获处理input()的两个异常,提高用户体验))
2.把文件关闭放在finally语句块中执行还是会出现问题,想下边这个代码,当前文件夹中并不存在‘My_file.txt’这个文件,那么程序执行起来会发生什么事情呢?你有办法解决吗?
try:
f = open('My_File.txt')
print(f.read())
except OSError as reason:
print('出错了:'+ str(reason))
finally:
if 'f' in locals():
f.close()
#while 'f'== True: (判断 对象f 是否存在)!!!
#f.close()
3.with使用,可以自动执行关闭操作
try:
with open('My_File1.txt') as f:
print(f.read())
except IOError as reason:
print('出错了:'+ str(reason))
