Bu, Catching an exception while using a Python 'with' statement numaralı soruların devamı niteliğindedir.
Oldukça yeni bir kullanıcıyım ve aşağıdaki kodu GNU/Linux üzerinde Python 3.2 ile test ettim. Yukarıda belirtilen soruda Bir Python 'with' ifadesi kullanıldığında bir istisna yakalamak - Bölüm 2
try:
with open('foo.txt', 'a'):
#
# some_code
#
except IOError:
print('error')
merak içerir: some_code onu yakalamadan bir IOError hatası yükseltir ne olur ? Açıkça 'dışardaki' ifadesiyle yakalanmıştı, ama gerçekten istediğim şey bu değildi.
Tamam diyebilirsiniz, sadece birkaç_kodu başka bir try-except ile kaydırın, vb., Ama istisnaların her yerden gelebileceğini biliyorum ve her kod parçasını korumak imkansız.
Özetle, sadece 'open' yazıp sadece 'open' ('foo.txt', 'a') istisnayı kaldırırsa yazdırmak istiyorum, bu yüzden aşağıdaki kodun neden önerilen standart olmadığını sormak için buradayım. Bunu yapmanın yolu:
try:
f = open('foo.txt', 'a')
except IOError:
print('error')
with f:
#
# some_code
#
#EDIT: 'else' statement is missing, see Pythoni's answer
Teşekkür ederiz!
Tam olarak haklısınız, 'else' altında 'with' yerleştirmeyi unutmuşum. – kynikos
Her halükarda benim asıl sorum benim tahminim haklıymış olsaydı: diğer eski soruya verilen cevap bu yöntemden gerçekten daha kötüydü? – kynikos
Tamam, bu durumdaki istisnayı halletmenin en iyi yolu sanırım, bu benim kabul ettiğim cevaptır. Belki de bunu başka bir soruya da kopyalayabilirsiniz: http://stackoverflow.com/questions/713794/catching-an-exception-while-using-a-python-with-statement – kynikos