En resumen, tengo una aplicación de Python sustancial que, entre otras cosas, hace llamadas a "losetup", "mount", etc. en Linux. Esencialmente consume recursos del sistema que deben liberarse cuando se completen.¿Tiene sentido un controlador de excepciones para toda la aplicación?
Si mi aplicación falla, quiero asegurarme de que estos recursos del sistema se hayan liberado correctamente.
¿Tiene sentido hacer algo como lo siguiente?
def main():
# TODO: main application entry point
pass
def cleanup():
# TODO: release system resources here
pass
if __name__ == "__main__":
try:
main()
except:
cleanup()
raise
¿Esto es algo que normalmente se hace? ¿Hay una mejor manera? Tal vez el destructor en una clase singleton?
Los manejadores de excepciones de nivel superior son útiles en las aplicaciones GUI. Las excepciones no detectadas lanzadas en los controladores de eventos aparecerán en la consola, pero en general no bloquearán el programa (por ejemplo, en PyGTK y PyQt), esto puede pasar desapercibido. Si muestra un cuadro de diálogo de error en el controlador, no tiene ese problema. –
También te sugiero que las pongas en aplicaciones de consola que procesen por lotes. Les pido que envíen un correo electrónico para que podamos notificarnos de cualquier problema, pero al menos podría iniciar sesión. –