Les fonctions a() et b() peuvent générer une exception. Ce code ne traite pas tout exception est de lancer pendant l'affectation "UnboundLocalError: Variable locale 'x' référencé avant cession" code:Comment faire pour ommit UnboundLocalError: Variable locale '' référencée avant l'affectation lorsque l'exception a été levée?
def foo():
try:
x = a('test')
b(x, 'test2')
except Exception as ex:
raise Exception('Message error: ' + str(x) + " " + str(ex)) #here could be UnboundLocalError: Local variable 'x' referenced before assignment
Ma solution est:
def foo():
try:
x = a('test')
try:
b(x, 'test2')
except Exception as ex:
raise Exception('Message error: ' + str(x) + " " + str(ex))
except Exception as ex:
raise Exception('Message error: ' + str(ex))
Est-il possible de le faire c'est plus compliqué, élégant? Maintenant, je suis obligé d'utiliser double try sauf template.
Pourquoi avez-vous besoin de faire référence 'x' dans le message d'exception en premier lieu? – roganjosh
En outre, ce n'est pas une bonne idée d'avoir deux fonctions regroupées dans une exception fourre-tout comme vous vouliez dans le premier bloc (ou utiliser une couverture 'except 'en général). Est-ce que 'x = a ('test')' échoue ou 'b (x, 'test2')'? Actuellement votre façon de déchiffrer cela est en soulevant encore une autre exception qui n'est pas prise. – roganjosh