dudas frame.f_exc_*
Milton Galo Patricio Inostroza Aguilera
minoztro en gmail.com
Vie Mayo 16 22:45:33 CEST 2008
Estimados:
Estoy tratando de sacar los valores de los siguientes atributos de frame:
f_exc_type, f_exc_value, f_exc_traceback
Pero siempre me encuentro con que están con el valor None, incluso
cuando pongo un valor 1/0...que estoy haciendo mal?...según la
documentación:
f_exc_type, f_exc_value, f_exc_traceback, represent the last exception
raised in the parent frame provided another exception was ever raised
in the current frame
y mi código de prueba es el siguiente:
def algo(a,b,c):
a = [2, 3, 4]
print id(a)
a.append(5)
1/0
algo(3,2,5)
lo que quiero hacer es capturar la exception para poder registrarla de
alguna forma..estoy utlizando settrace:
def trace(frame, event, arg):
code = frame.f_code
if event == 'call':
print code.co_name
print frame.f_locals
print frame.f_exc_value
print frame.f_exc_traceback
print frame.f_exc_value
raw_input()
return trace
elif event == 'line':
print frame.f_exc_value
print frame.f_exc_traceback
print frame.f_exc_value
return trace
elif event == 'return':
print code.co_name
print frame.f_exc_value
print frame.f_exc_traceback
print frame.f_exc_value
print arg
raw_input()
el código completo está acá [1]
[1] http://pastebin.com/m4ef02aad
Estuve también viendo que curiosamente el nombre de la función que me
muestra en su locals el error es el método apport_excepthook, pero
pregunté y me dicen que este no es de la librería estandar....en
settrace preguntando por este nombre de code {code.co_name}, puedo ver
su locals extraer el traceback y saber en que línea de código python
se produjo la caída y el índice del bytecode {esto salvo algunas
excepciones que detallan en la documentación}....Como se puede hacer
algo de forma más limpia, estandar y eficiente?.....apport_excepthook
siempre contendrá en su locals el traceback y el detalle de la
excepción?
gracias por sus comentarios y ayudas,
--
Milton Inostroza Aguilera
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es