2010-09-08 6 views
5

Tenía la esperanza de que poner 'sys.exit (1)' y atraparlo más tarde de esta manera funcionaría.puede sys.exit() estar listo para salir de la estructura de botella

xml_open() 
try: 
    run(reloader=True, host='localhost', port=8080) 
except SystemExit: 
    xml_save() 
    print "Exited ..." 

¿Hay alguna otra solución para salir de estos micro-marcos pitón para salir desde el interior los manipuladores?

Respuesta

1

Si no es siendo manejado a continuación, comprobar si Su realmente ejecuta sys.exist (1) declaración, porque Puede ocurrir alguna otra excepción planteado que no está siendo manejado probar esto ....

xml_open() 
try: 
    run(reloader=True, host='localhost', port=8080) 
except SystemExit: 
    xml_save() 
    print "Exited ..." 
except Exception, e: 
    print "ohhh no.......",str(e) 
    import pdb 
    pdb.post_mortem() 
    sys.exit(-1) 
+2

sys.exit() aumenta SystemExit ... no generará ninguna otra excepción. Ver http://docs.python.org/library/sys.html#sys.exit – vrdhn

+0

Quiero decir comprobar si se llama o no! – shahjapan

+0

oh ok ... en realidad, el problema aquí es con tantas capas de llamadas fn y prueba, excepto ... algo se come la excepción ... parece que se está realizando algún tipo de manipulación, pero llega a mi controlador de excepciones. – vrdhn

0

Desde mi experiencia limitada, sys.exit() debería funcionar cuando el recargador está apagado. De lo contrario, el recargador volverá a cargar el código en sys.exit() y se reanudará su aplicación. Por supuesto, podría estar equivocado sobre por qué sys.exit() no funciona, pero para mí funcionó cuando apagué el recargador.

1

En caso de que esto siga siendo un problema para usted, verifique mi respuesta here para obtener una solución limpia para detener el armazón de la botella.

Cuestiones relacionadas