开发者社区> 问答> 正文

py的缺陷吗——try...except,except里只要有对应第一个try的?400报错

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’的错误,这个是缺陷吗还是什么,麻烦大咖 解释下

展开
收起
爱吃鱼的程序员 2020-06-08 17:01:16 296 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

     

    try:..exceptIOError:passexceptZeroDivisionError:pass...

    exception后面如果接具体的异常类型,则代表捕获指定异常,如果后面没有接具体的异常类型,则代表捕获所有可以捕获的异常

    所以多句exceptException,那么代表是根据不同的异常,执行不同的指令

    你的问题是:因为open()打开一个不存在的文件,触发了OSError异常, 而这个异常被你下面语句捕获,所以没有报错

    exceptOSErrorasreason:print('文件出错了\n错误的原因是:'+str(reason))

    当你去掉这句异常捕获代码,触发的OSError异常没有被程序捕获,则报错返回

    2020-06-08 17:01:31
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载