Python try / except: muestra la causa del error después de mostrar mis variables

Ni siquiera estoy seguro de cuáles son las palabras correctas para buscar. Quiero mostrar partes del objeto de error en un bloque excepto (similar al objeto err en VBScript, que tiene Err.Number y Err.Description). Por ejemplo, quiero mostrar los valores de mis variables, luego mostrar el error exacto. Claramente, estoy causando un error dividido por cero a continuación, pero ¿cómo puedo imprimir ese hecho?

try: x = 0 y = 1 z = y / xz = z + 1 print "z=%d" % (z) except: print "Values at Exception: x=%dy=%d " % (x,y) print "The error was on line ..." print "The reason for the error was ..." 

 try: 1 / 0 except Exception as e: print e 

Si está esperando un error de DivideByZero, puede detectar ese error en particular

 import traceback try: x = 5 y = 0 print x/y except ZeroDivisionError: print "Error Dividing %d/%d" % (x,y) traceback.print_exc() except: print "A non-ZeroDivisionError occurred" 

Puede obtener manualmente el número de línea y otra información llamando a traceback.print_exc()

El valor de cadena del objeto de excepción le dará la razón. El módulo de traceback le permitirá acceder al rastreo completo.

Un mejor enfoque es hacer uso del módulo estándar de registro de Python .

 import sys, traceback, logging logging.basicConfig(level=logging.ERROR) try: x = 0 y = 1 z = y / xz = z + 1 print "z=%d" % (z) except: logging.exception("Values at Exception: x=%dy=%d " % (x,y)) 

Esto produce el siguiente resultado:

 ERROR:root:Values at Exception: x=0 y=1 Traceback (most recent call last): File "py_exceptions.py", line 8, in  z = y / x ZeroDivisionError: integer division or modulo by zero 

La ventaja de usar el módulo de registro es que tiene acceso a todos los manejadores de registro sofisticados (syslog, correo electrónico, registro de archivos rotativos), lo que es útil si desea que su excepción se registre en varios destinos.

En otras palabras,

 try: 1/0 except Exception as e: print e 

Puede obtener los detalles en las páginas del manual enlazadas por Ignacio en su respuesta.