在使用Python 'with'语句时捕获异常 - 第二部分
这是对问题的进一步讨论,链接是 在使用Python的'with'语句时捕获异常。
我还是个新手,刚在GNU/linux上用Python 3.2测试了以下代码。
在上面提到的问题中,有人提出了类似的方式来捕获'with'语句中的异常:
try:
with open('foo.txt', 'a'):
#
# some_code
#
except IOError:
print('error')
这让我想知道,如果some_code抛出一个IOError而没有被捕获,会发生什么?显然,这个异常会被外层的'except'语句捕获,但这可能不是我真正想要的结果。
你可能会说,那就用另一个try-except把some_code包裹起来,但我知道异常可能来自任何地方,根本不可能保护每一段代码。
总之,我只想在open('foo.txt', 'a')抛出异常时打印'error',所以我在这里想问,为什么下面的代码不是推荐的标准做法:
try:
f = open('foo.txt', 'a')
except IOError:
print('error')
with f:
#
# some_code
#
#EDIT: 'else' statement is missing, see Pythoni's answer
谢谢!
1 个回答
20
在编程中,很多时候我们会遇到一些问题,尤其是在使用不同的工具和语言时。比如,有些人可能在使用某个库或者框架时,发现它的功能和他们的需求不太匹配。这种情况下,大家通常会去网上查找解决方案,像StackOverflow这样的论坛就是一个很好的地方。
在这些论坛上,程序员们会分享他们的经验和解决方案,帮助其他人解决类似的问题。你可以看到很多人提问,也有很多人回答,大家互相帮助,形成一个很好的学习社区。
如果你在编程的过程中遇到困难,不妨去这些地方看看,可能会找到你需要的答案,或者得到一些启发。
try:
f = open('foo.txt', 'a')
except IOError:
print('error')
else:
with f:
#
# some_code
#