Python标准异常总结
f = open('asdf.txt') #我电脑中并没有这个文本
print(f.read())
f.close()
由于不存在这个文本,所以会返回异常:
检测异常:
1:try......except......(一旦检测到异常,其他程序就不会再执行)
try:
f = open('asdf.txt') #我电脑中并没有这个文本
print(f.read())
f.close()
except OSError: #如果有错误,就输出下面的语句
print('文件出错啦!')
try:
f = open('asdf.txt') #我电脑中并没有这个文本
print(f.read())
f.close()
except OSError as reason: #如果有错误,就输出下面的语句
print('文件出错啦!
出错的原因是:'+str(reason))
except TypeError as reason:
print('文件出错啦!
出错的原因是:'+str(reason))
try:
f = open('asdf.txt') #我电脑中并没有这个文本
print(f.read())
f.close()
except OSError : #如果有错误,就输出下面的语句
print('文件出错啦!')
try:
f = open('asdf.txt') #我电脑中并没有这个文本
print(f.read())
f.close()
except (OSError,TypeError): #如果有错误,就输出下面的语句
print('文件出错啦!')
2:try......except......finally......(无论是否出现异常,都会执行finally中的语句)
#错误案例
try:
f = open('haha.txt','w')
print(f.write('我存在你深深的脑海里!!!')) #返回写入的字符长度
sum = 1+'1'
f.close()
except(OSError,TypeError):
print('出错啦!')
上面的程序是有问题的:系统中没有haha.txt,因为内容在执行close之前就只写到了缓冲区,当执行close语句后才能写入文件,因此,而执行到sum=1+'1'时会出现异常,因此不继续执行下面的f.close(),所以内容并没有写进文档,由此需要加入finnal
try:
f = open('haha.txt','w')
print(f.write('我存在你深深的脑海里!!!')) #返回写入的字符长度
sum = 1+'1'
f.close()
except(OSError,TypeError):
print('出错啦!')
finally:
f.close()
引发异常:raise