En Python, pour quelque obscure raison, il semble qu'on ne puisse pas à la fois utiliser une clause except et une clause finally dans un bloc try.
J'avais vu un PEP ouvert pour faire modifier Python mais pas de nouvelle depuis.
-- Hervé Cauwelier http://www.oursours.net/
fraca7
Bonjour,
En Python, pour quelque obscure raison, il semble qu'on ne puisse pas à la fois utiliser une clause except et une clause finally dans un bloc try.
Il me semble que c'est parce qu'il y aurait une ambiguïté sur lequel des deux blocs devrait s'exécuter en premier en cas d'exception mais je ne suis pas sûr...
Comment peut-on faire alors pour qu'un certain code s'exécute à chaque fois qu'on sort d'un bloc, que ce soit normalement ou par une exception ?
En gros, je voudrais pouvoir faire ça (l'équivalent, en tous cas) :
try: # tentative d'ouverture du fichier # tentative de manipulation du fichier except bla: ... except bli: ... finally: # fermer le fichier s'il est ouvert
Cela dit je trouve que c'est moche de vérifier si le fichier est ouvert pour le fermer... D'habitude je fais plutôt ça comme ça:
try: # ouverture try: # manip except bla: # pb de manip except: # pb d'ouverture else: # fermeture, on est sûr qu'il est ouvert
mais bon les goûts et les couleurs...
Bonjour,
En Python, pour quelque obscure raison, il semble qu'on ne puisse pas
à la fois utiliser une clause except et une clause finally dans un
bloc try.
Il me semble que c'est parce qu'il y aurait une ambiguïté sur lequel des
deux blocs devrait s'exécuter en premier en cas d'exception mais je ne
suis pas sûr...
Comment peut-on faire alors pour qu'un certain code s'exécute à chaque
fois qu'on sort d'un bloc, que ce soit normalement ou par une
exception ?
En gros, je voudrais pouvoir faire ça (l'équivalent, en tous cas) :
try:
# tentative d'ouverture du fichier
# tentative de manipulation du fichier
except bla:
...
except bli:
...
finally:
# fermer le fichier s'il est ouvert
En Python, pour quelque obscure raison, il semble qu'on ne puisse pas à la fois utiliser une clause except et une clause finally dans un bloc try.
Il me semble que c'est parce qu'il y aurait une ambiguïté sur lequel des deux blocs devrait s'exécuter en premier en cas d'exception mais je ne suis pas sûr...
Comment peut-on faire alors pour qu'un certain code s'exécute à chaque fois qu'on sort d'un bloc, que ce soit normalement ou par une exception ?
En gros, je voudrais pouvoir faire ça (l'équivalent, en tous cas) :
try: # tentative d'ouverture du fichier # tentative de manipulation du fichier except bla: ... except bli: ... finally: # fermer le fichier s'il est ouvert
Cela dit je trouve que c'est moche de vérifier si le fichier est ouvert pour le fermer... D'habitude je fais plutôt ça comme ça:
try: # ouverture try: # manip except bla: # pb de manip except: # pb d'ouverture else: # fermeture, on est sûr qu'il est ouvert
mais bon les goûts et les couleurs...
fraca7
Bonjour,
En Python, pour quelque obscure raison, il semble qu'on ne puisse pas à la fois utiliser une clause except et une clause finally dans un bloc try.
Il me semble que c'est parce qu'il y aurait une ambiguïté sur lequel des deux blocs devrait s'exécuter en premier en cas d'exception mais je ne suis pas sûr...
Non en fait je crois me souvenir, c'est parce que ça mélangerait des constructions qui ont des buts différents: except (gestion d'erreur) et finally (gestion de ressources). Cela dit, comme ils utilisent déjà tous les deux 'try'...
Bonjour,
En Python, pour quelque obscure raison, il semble qu'on ne puisse pas
à la fois utiliser une clause except et une clause finally dans un
bloc try.
Il me semble que c'est parce qu'il y aurait une ambiguïté sur lequel des
deux blocs devrait s'exécuter en premier en cas d'exception mais je ne
suis pas sûr...
Non en fait je crois me souvenir, c'est parce que ça mélangerait des
constructions qui ont des buts différents: except (gestion d'erreur) et
finally (gestion de ressources). Cela dit, comme ils utilisent déjà tous
les deux 'try'...
En Python, pour quelque obscure raison, il semble qu'on ne puisse pas à la fois utiliser une clause except et une clause finally dans un bloc try.
Il me semble que c'est parce qu'il y aurait une ambiguïté sur lequel des deux blocs devrait s'exécuter en premier en cas d'exception mais je ne suis pas sûr...
Non en fait je crois me souvenir, c'est parce que ça mélangerait des constructions qui ont des buts différents: except (gestion d'erreur) et finally (gestion de ressources). Cela dit, comme ils utilisent déjà tous les deux 'try'...
Amaury Forgeot d'Arc
Bonjour,
En Python, pour quelque obscure raison, il semble qu'on ne puisse pas à la fois utiliser une clause except et une clause finally dans un bloc try.
Il me semble que c'est parce qu'il y aurait une ambiguïté sur lequel des deux blocs devrait s'exécuter en premier en cas d'exception mais je ne suis pas sûr...
Non en fait je crois me souvenir, c'est parce que ça mélangerait des constructions qui ont des buts différents: except (gestion d'erreur) et finally (gestion de ressources). Cela dit, comme ils utilisent déjà tous les deux 'try'...
En fait, c'est déjà implémenté, et c'est pour la prochaine version 2.5. (http://www.python.org/peps/pep-0341.html)
Bonjour,
En Python, pour quelque obscure raison, il semble qu'on ne puisse pas
à la fois utiliser une clause except et une clause finally dans un
bloc try.
Il me semble que c'est parce qu'il y aurait une ambiguïté sur lequel
des deux blocs devrait s'exécuter en premier en cas d'exception mais
je ne suis pas sûr...
Non en fait je crois me souvenir, c'est parce que ça mélangerait des
constructions qui ont des buts différents: except (gestion d'erreur) et
finally (gestion de ressources). Cela dit, comme ils utilisent déjà tous
les deux 'try'...
En fait, c'est déjà implémenté, et c'est pour la prochaine version 2.5.
(http://www.python.org/peps/pep-0341.html)
En Python, pour quelque obscure raison, il semble qu'on ne puisse pas à la fois utiliser une clause except et une clause finally dans un bloc try.
Il me semble que c'est parce qu'il y aurait une ambiguïté sur lequel des deux blocs devrait s'exécuter en premier en cas d'exception mais je ne suis pas sûr...
Non en fait je crois me souvenir, c'est parce que ça mélangerait des constructions qui ont des buts différents: except (gestion d'erreur) et finally (gestion de ressources). Cela dit, comme ils utilisent déjà tous les deux 'try'...
En fait, c'est déjà implémenté, et c'est pour la prochaine version 2.5. (http://www.python.org/peps/pep-0341.html)
fraca7
En fait, c'est déjà implémenté, et c'est pour la prochaine version 2.5. (http://www.python.org/peps/pep-0341.html)
Tiens donc, il faut que je me tienne au courant... Pas sûr d'apprécier cela dit...
En fait, c'est déjà implémenté, et c'est pour la prochaine version 2.5.
(http://www.python.org/peps/pep-0341.html)
Tiens donc, il faut que je me tienne au courant... Pas sûr d'apprécier
cela dit...