esta es una continuación de la pregunta Catching an exception while using a Python 'with' statement.
Soy bastante novato y probé el siguiente código con Python 3.2 en GNU/linux.Capturando una excepción al usar una instrucción Python 'con' - Parte 2
En la pregunta antes mencionada, se propuso algo similar a esto para capturar una excepción de un 'con' declaración:
try:
with open('foo.txt', 'a'):
#
# some_code
#
except IOError:
print('error')
Eso me hace pensar: ¿qué ocurre si some_code plantea una IOError sin la captura de él ? Obviamente está atrapado por la declaración externa 'excepto', pero eso no podría ser lo que realmente quería.
Podrías decir que está bien, simplemente envuelve some_code con otra prueba, excepto, y así sucesivamente, pero sé que las excepciones pueden venir de todas partes y es imposible proteger cada parte del código.
En resumen, solo quiero imprimir 'error' si y solo si open ('foo.txt', 'a') plantea la excepción, entonces estoy aquí para preguntar por qué el siguiente código no es el estándar sugerido forma de hacer esto:
try:
f = open('foo.txt', 'a')
except IOError:
print('error')
with f:
#
# some_code
#
#EDIT: 'else' statement is missing, see Pythoni's answer
Gracias!
Tiene toda la razón, olvidé colocar 'con' en 'else'. – kynikos
De todos modos mi pregunta principal era si mi conjetura era correcta: ¿la respuesta dada a la otra pregunta anterior era realmente peor que este método? – kynikos
Ok, supongo que esta es la mejor manera de manejar la excepción en este caso, así que esta es mi respuesta aceptada. Tal vez podrías copiar este también en la otra pregunta http://stackoverflow.com/questions/713794/catching-an-exception-while-using-a-python-with-statement – kynikos