Python基础-标准异常、异常处理

2019-04-14 22:12发布

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