2010-10-16 7 views

Répondre

3

Dans VBScript et d'autres langages dérivés de VB, vous pouvez obtenir ce type de comportement avec "ON ERROR GOTO NEXT".

Aucun comportement de ce type n'existe en Python. Même si vous enveloppez chaque énoncé plus haut niveau comme:

try: 
    do_something() 
except Exception as e: 
    print e 

try: 
    do_something_else() 
except Exception as e: 
    print e 

vous auriez toujours le résultat que les déclarations dans do_something sont sautées au point où l'exception est levée.

Même si vous avez un cas d'utilisation particulier à l'esprit, il se peut qu'il y ait d'autres réponses acceptables. Par exemple, dans une boucle de niveau supérieur:

while True: 
    cmd = get_command() 
    if cmd == 'quit': break 
    try: 
    run_command(cmd) 
    except Exception as e: 
    print "Error running " + cmd + ":" 
    print e 
2
import traceback 

try: 
    # do whatever you want 
except Exception: 
    traceback.print_exc() 

Bien sûr, vous devriez être plus précis dans un scénario réel, à savoir que vous ne devriez pas attraper et ignorer tous Exception cas, seuls ceux qui vous intéressent et vous savez qu'ils sont sûrs d'ignorer.

Notez également que si une exception se produit quelque part dans le bloc try..except, l'exécution continuera après le bloc try..except, et non à l'instruction suivante. C'est probablement le plus proche de ce que vous voulez réaliser.

+0

Merci! C'était vraiment utile! – FRD

Questions connexes