récupération des variables locales après une exception

Le
William Dode
slt,

Pour améliorer mon système de rattrapage d'erreurs j'aimerai récupérer
les variables locales juste avant l'erreur, hors local() ne me le permet
pas.

def f():
a=5
raise Exception('!')

try:
f()
except:
#ICI je voudrai récupérer la valeur de a par ex

des idées ?

--
William Dodé - http://flibuste.net
Informaticien indépendant
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bruno Desthuilliers
Le #668064
slt,

Pour améliorer mon système de rattrapage d'erreurs j'aimerai récupérer
les variables locales juste avant l'erreur, hors local() ne me le permet
pas.

def f():
a=5
raise Exception('!')

try:
f()
except:
#ICI je voudrai récupérer la valeur de a par ex

des idées ?

import inspect


def f(arg):
a = 42
raise Exception('yaddayadda')

try:
f('wot')
except Exception, e:
t = inspect.trace()
print t[1][0].f_locals

=> {'a': 42, 'arg': 'wot'}

HTH

William Dode
Le #667852
On 17-09-2007, Bruno Desthuilliers wrote:
slt,

Pour améliorer mon système de rattrapage d'erreurs j'aimerai récupérer
les variables locales juste avant l'erreur, hors local() ne me le permet
pas.

...


import inspect
...


Super, c'est exactement ce que je cherchais, merci.

--
William Dodé - http://flibuste.net
Informaticien indépendant


Méta-MCI \(MVP\)
Le #667849
Bonjour !

Je savais que ça existait. Mais, à chaque fois que j'ai besoin d'un truc pareil (inspect), je passe
deux plombes à chercher dans la doc.

Question : tu as répondu de mémoire ? Ou as-tu dû faire une recherche ?
Question secondaire : quel est le prénom d'Alzheimer ?

@+

Michel Claveau
Bruno Desthuilliers
Le #667848
Bonjour !

Je savais que ça existait. Mais, à chaque fois que j'ai besoin d'un truc
pareil (inspect), je passe deux plombes à chercher dans la doc.

Question : tu as répondu de mémoire ?


Pas tout à fait, non, quand même... Je me souvenais juste qu'il y avait
quelque chose de cet ordre dans inspect.

Ou as-tu dû faire une recherche ?


Oui. Mais ça ne m'a pas pris deux heures... (=~ 10mn, tests inclus)

Question secondaire : quel est le prénom d'Alzheimer ?


Heu.... Me souviens plus :(

Laurent Pointal
NicolasP
Le #667610
M�ta-MCI (MVP) wrote:

Question secondaire : quel est le prénom d'Alzheimer ?


Le prénom, et la maladie: http://fr.wikipedia.org/wiki/Alzheimer

Et on y découvre qu'il n'est pas mort de sa découverte.

Peut être parce qu'il a oublié d'en mourir...



William Dode
Le #667609
On 19-09-2007, Bruno Desthuilliers wrote:
Bonjour !

Je savais que ça existait. Mais, à chaque fois que j'ai besoin d'un truc
pareil (inspect), je passe deux plombes à chercher dans la doc.

Question : tu as répondu de mémoire ?


Pas tout à fait, non, quand même... Je me souvenais juste qu'il y avait
quelque chose de cet ordre dans inspect.

Ou as-tu dû faire une recherche ?


Oui. Mais ça ne m'a pas pris deux heures... (=~ 10mn, tests inclus)


Tu les mets sur mon compte ? ;-)

--
William Dodé - http://flibuste.net
Informaticien indépendant


Bruno Desthuilliers
Le #667608
On 19-09-2007, Bruno Desthuilliers wrote:
Bonjour !

Je savais que ça existait. Mais, à chaque fois que j'ai besoin d'un truc
pareil (inspect), je passe deux plombes à chercher dans la doc.

Question : tu as répondu de mémoire ?
Pas tout à fait, non, quand même... Je me souvenais juste qu'il y avait

quelque chose de cet ordre dans inspect.

Ou as-tu dû faire une recherche ?
Oui. Mais ça ne m'a pas pris deux heures... (=~ 10mn, tests inclus)



Tu les mets sur mon compte ? ;-)


Je t'en prie, c'est offert par la maison !-)



Pierre Quentel
Le #667343
Bonjour,

Ca semble marcher avec locals() :

def f():
a = 5
raise Exception(locals())

try:
f()
except Exception,msg:
print msg

Non ?

A+
Pierre
Pierre Quentel
Le #667342
C'est juste pour remettre le bon sujet au lieu du pas très parlant "?"
Publicité
Poster une réponse
Anonyme