En primer lugar, no estoy seguro de si mi enfoque es correcto, por lo que estoy abierto a una variedad de sugerencias.Se repite con frecuencia try/except en Python
Si las sentencias try/except se repiten con frecuencia en el código, ¿hay alguna forma de acortarlas o evitar escribirlas por completo?
try:
# Do similar thing
os.remove('/my/file')
except OSError, e:
# Same exception handing
pass
try:
# Do similar thing
os.chmod('/other/file', 0700)
except OSError, e:
#Same exception handling
pass
Por ejemplo, para las acciones de una línea se podría definir un envoltorio de manejo de excepciones y luego pasar una función lambda:
def may_exist(func):
"Work with file which you are not sure if exists."""
try:
func()
except OSError, e:
# Same exception handling
pass
may_exist(lambda: os.remove('/my/file'))
may_exist(lambda: os.chmod('/other/file', 0700))
¿Este 'solución' simplemente hacer las cosas menos claro? ¿Debería escribir completamente todas las declaraciones try/except?
posible duplicado de [Python:? Try-solo son la expresión] (http://stackoverflow.com/questions/7088009/python-try-except-as -an-expression) – agf
Yo y @kindall respondimos esta pregunta muy amablemente ayer. – agf
@agf: Esa pregunta parece parcialmente relacionada, gracias por enlazar. Sin embargo, la respuesta de Ned Batchelder parece tener la ventaja de que no hay necesidad de crear una función fuera del bloque de código para el cual se deben capturar excepciones. – sutre