129 votes

Attraper une exception et continuer le bloc d'essai en Python

Puis-je retourner à l'exécution du bloc try après qu'une exception se soit produite?

Par exemple:

try:
    do_smth1()
except:
    pass

try:
    do_smth2()
except:
    pass

contre.

try:
    do_smth1()
    do_smth2()
except:
    ??? # mot magique pour passer à do_smth2() s'il y avait une exception dans do_smth1

1voto

David Zatica Points 44

Ce n'est certainement pas la manière la plus propre de le faire, mais vous pouvez le mettre dans une boucle while avec une variable définie sur true, et quand la fonction s'exécute avec succès, elle définit la variable sur false, tandis que si elle échoue, elle garde la variable définie sur true.

x = True
while x == True:
    try:
        do_smth1()
        do_smth2()
        x = False
    except Exception:
        x = True

De cette façon, la boucle while continuera à répéter la section try except encore et encore jusqu'à ce qu'elle fonctionne, moment où x est défini sur false et la boucle s'arrête.

De plus, vous pouvez implémenter un break dans la boucle while au lieu de le baser sur une variable, par exemple:

while True:
    try:
        do_smth1()
        do_smth2()
        break
    except Excpetion:
        pass

P.S Il est bon d'ajouter une exception spécifique pour la section except, au lieu de laisser cela pour n'importe quelle exception. Cela rend le code plus propre et est plus judicieux lors de la gestion des erreurs, surtout dans de plus gros projets

0voto

Ishkatan Points 26

Si do_smth1() a fonctionné, alors do_smth2() ne sera pas essayé.

try:
    x=do_smth1()
except:
    try:
        x=do_smth2()
    except:
        x="Les deux ont échoué"

print (x)

0voto

Avral Points 19

cela fonctionne pour moi!

for (idx, row) in df.iterrows():

    try:
       ... faire quelque chose

    except IndexError:
       continue

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X