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'
>>> 展开
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'
>>> 展开
5个回答
展开全部
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("打开失败")
展开全部
with open() as f这样写的意义是自动实现上下文管理,不论with语句块是正常结束还是异常退出之前都会关闭文件f。with不保证捕获其中发生的所有异常。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我的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
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来处理异常
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的编译器是什么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询