Python with as为什么无法捕获异常

try:a=open("asdasdas")except:print("打开失败")withopen("asdasdas")asa:print("打开成功")网上查找了无... try:
a=open("asdasdas")
except:
print("打开失败")

with open("asdasdas") as a:
print("打开成功")

网上查找了无数个文章都是推荐 类似with open("asdasdas") as a:来简洁代码
运行了一下 貌似没什么意义

Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
=================== RESTART: D:\Program Files\python\文件.py ===================
打开失败
Traceback (most recent call last):
File "D:\Program Files\python\文件.py", line 7, in <module>
with open("asdasdas") as a:
FileNotFoundError: [Errno 2] No such file or directory: 'asdasdas'
>>>
展开
 我来答
宿舍总动员

2019-11-08 · TA获得超过8374个赞
知道大有可为答主
回答量:1.3万
采纳率:71%
帮助的人:1944万
展开全部

with在打开文件的这个操作中的作用是保证每次正常打开文件后,不论遇到什么,最后都会执行文件的关闭操作,避免脚本中遗漏。但是他自身并没有抓取异常的处理机制。

with open("asdasdas") as a:

    print("打开成功")

    do_something()

这段代码的含义,相当于打开了文件“asdasdas”后打印了“打开成功”的字样后,又处理了do_something()这段逻辑。不论do_something()这段逻辑正常执行结束,还是抛出异常,都会保证最终“asdasdas”这个文件都会被关闭。避免因为文件未被关闭而导致的种种问题。


你的代码可以改为以下部分,这样就可以catch到读取文件中的异常了。

try:

    with open("asdasdas") as a:

        print("打开成功")

except:

    print("打开失败")

GTA小鸡
高粉答主

2019-09-26 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
with open() as f这样写的意义是自动实现上下文管理,不论with语句块是正常结束还是异常退出之前都会关闭文件f。with不保证捕获其中发生的所有异常。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
花花jam3
2019-11-16
知道答主
回答量:18
采纳率:0%
帮助的人:2.2万
展开全部
我的python版本基于3.6
try:
a = open("saijda")
except Exception as e:
print(e.args)
应该是这样写的,然后返回异常(2, 'No such file or directory'),因为我没有这个文件,单纯的捕获异常是这样的,python2.X的版本应该是print e.message
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-09-30
展开全部
with as并不会捕获处理异常的,还是需要自己try except来处理异常
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
可达鸭托福雅思老师团
2019-10-11 · 超过17用户采纳过TA的回答
知道答主
回答量:75
采纳率:100%
帮助的人:14.2万
展开全部
你的编译器是什么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式