Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

22 réponses
Avatar
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

10 réponses

1 2 3
Avatar
Bruno Desthuilliers
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

Avatar
William Dode
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


Avatar
Méta-MCI \(MVP\)
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
Avatar
Bruno Desthuilliers
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 :(

Avatar
Laurent Pointal
Avatar
NicolasP
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...



Avatar
William Dode
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


Avatar
Bruno Desthuilliers
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 !-)



Avatar
Pierre Quentel
Bonjour,

Ca semble marcher avec locals() :

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

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

Non ?

A+
Pierre
Avatar
Pierre Quentel
C'est juste pour remettre le bon sujet au lieu du pas très parlant "?"
1 2 3