11
這是問題Catching an exception while using a Python 'with' statement的延續。
我很新手,我在GNU/linux上用Python 3.2測試了下面的代碼。使用Python'with'語句捕獲異常 - 第2部分
在上面提到的問題,與此類似,提出了從「用」的語句捕捉異常:
try:
with open('foo.txt', 'a'):
#
# some_code
#
except IOError:
print('error')
這讓我懷疑:如果some_code提出了一個IOError卻一無所獲,但它會發生什麼?這顯然被外部的「除外」聲明所吸引,但那不可能是我真正想要的。
你可以說好,只需用另一個try-except等包裝some_code,但我知道異常可以來自任何地方,並且不可能保護每一段代碼。
總之,我只是想打印'錯誤'當且僅當打開('foo.txt','a')引發異常,所以我在這裏要問,爲什麼下面的代碼不是標準的建議這樣做的方式:
try:
f = open('foo.txt', 'a')
except IOError:
print('error')
with f:
#
# some_code
#
#EDIT: 'else' statement is missing, see Pythoni's answer
謝謝!
你是完全正確的,我忘了在'else'下放置'with'。 – kynikos
無論如何,我的主要問題是,如果我的猜測是正確的:給其他老問題的答案真的比這個方法更糟? – kynikos
好吧,我想這是處理這種情況下異常的最好方法,所以這是我接受的答案。也許你可以複製這一個也在另一個問題http://stackoverflow.com/questions/713794/catching-an-exception-while-using-a-python-with-statement – kynikos