try:
f = open('我为什么是一个文件.txt') #这个txt并不存在
print(f.read())
f.close()
sum=1+'1' #文件类型出错
except TypeError as reason:
print('类型出错啦\n错误的原因是:'+str(reason))
except OSError as reason:
print('文件出错了\n错误的原因是:'+str(reason))
如果去掉这两行
except OSError as reason:
print('文件出错了\n错误的原因是:'+str(reason))
会报错
Traceback (most recent call last):
File "E:/PyCharm 2016.3.2/untitled3/guessing/test01.py", line 2, in <module>
f = open('我为什么是一个文件.txt') #这个txt并不存在
FileNotFoundError: [Errno 2] No such file or directory: '我为什么是一个文件.txt'
而如果去掉
except TypeError as reason:
print('类型出错啦\n错误的原因是:'+str(reason))
则不会报错,也就是说忽视了sum=1+‘1’的错误,这个是缺陷吗还是什么,麻烦大咖 解释下
try:..exceptIOError:passexceptZeroDivisionError:pass...
exception后面如果接具体的异常类型,则代表捕获指定异常,如果后面没有接具体的异常类型,则代表捕获所有可以捕获的异常
所以多句exceptException,那么代表是根据不同的异常,执行不同的指令
你的问题是:因为open()打开一个不存在的文件,触发了OSError异常, 而这个异常被你下面语句捕获,所以没有报错
exceptOSErrorasreason:print('文件出错了\n错误的原因是:'+str(reason))
当你去掉这句异常捕获代码,触发的OSError异常没有被程序捕获,则报错返回
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。