python - serpientes - Captura genérica de pitón
exception (3)
¿Esto funciona? :
except BaseException, e:
Tengo un comportamiento extremadamente extraño que parece dar lugar a excepciones silenciosas. ¿Cómo puedo escribir una captura general de prueba donde puedo depurar todas las excepciones? Algo como:
try:
# something that fails
except e:
print e
Un poco más sobre el problema que nos ocupa en detalle:
Tengo una aplicación Django que en mi comp (Ubuntu Linux 8.10) funciona bien tanto a través de runserver como mod-python. En el servidor de despliegue (Ubunut Linux 8.10) funciona bien a través de runserver, pero falla a través de apache en mod-python.
Reduje la causa a una parte de la aplicación que usa Berkeley DB (bsddb.db) y claves secundarias. El método de devolución de llamada para claves secundarias usa pickle para formatear las teclas. Falla cuando llamo pickle en un solo valor. Sin embargo, solo falla cuando uso cPickle, y también funciona el uso de pickle en los mismos valores fuera de la función de devolución de llamada.
Solo quiero saber por qué falla con cPickle.
El módulo de rastreo es bastante útil para formatear los registros de seguimiento. Luego puede escribirlo en un archivo de registro.
Las excepciones ya están impresas por defecto antes de la finalización del programa. Si desea enviar el error a otra parte (no imprimirlo), puede hacer esto:
try:
something()
except Exception as e:
send_somewhere(traceback.format_exception(*sys.exc_info()))
raise # reraises the exception
tenga en cuenta que este formato que utiliza la palabra clave as
es para python> 2.6. La vieja manera fue:
except Exception, e: