2016-11-29 1 views
0

Ich weiß, ich bin nicht klar auf diese Sache, aber ich könnte nicht genauer im Titel sein. Betrachten Sie den folgenden Code ein:Python: Pseudo versuchen, bevor tatsächlich versuchen und Ausnahme

try: 
    print "Try this out" 
    a = int("Blah blah") 
except: 
    print "I got the exception" 

Die Ausgabe dieses Codes ist-

Try this out 
I got the exception 

Was ich die Python tun möchte, ist zu prüfen, ob es eine Ausnahme im try erhöhen könnten: Block und dann Führ es aus. Andernfalls führe einfach den except: block aus. Ist es möglich, so etwas zu tun, ohne die vielen try-except-Blöcke zu verschachteln?

+0

Warum wollen Sie so etwas zu tun? Das widerspricht der Python-Philosophie von [EAFP] (https://docs.python.org/2/glossary.html). –

+0

Diese Frage oder Zweck ist nicht sehr klar. Wie würden Sie das mit verschachtelten Blöcken machen? Möchten Sie, dass der Pseudo-Lauf Nebenwirkungen hat? Können Sie zuerst eine Bedingung überprüfen, bevor Sie den Code ausführen, der eine Ausnahme auslöst? Das klingt mehr nach dem, was Sie versuchen zu tun. – theorifice

+0

Python ist vollständig dynamisch typisiert. Ich denke, Sie beziehen sich auf Sprachen wie Java, wo Funktionen mit dem 'throws SomeExceptionType' am Ende ihrer Funktionsdeklaration gekennzeichnet werden können. Python ist nicht so. Sie erhalten die Ausnahmen während der Laufzeit und können nicht feststellen, ob sie es werfen wird (oder wirklich kann). – Goodies

Antwort

0

Nein, das ist nicht möglich, weil Sie während der Ausführung eine Ausnahme erhalten. Aber Sie können wie folgt tun:

try: 
    a = int("Blah blah") 
    print "Try this out" 
except: 
    print "I got the exception" 
0

Ihre try-Anweisung drucken bis da kein Fehler passiert es beim Drucken, aber sobald er versucht, a auszuführen, wird einen Fehler so except ausführt.

auf diese Weise versuchen, die Ausnahme richtig zu fangen:

try: 
    a = int("Blah blah") 
    print ("Try this out") 

except: 
    print ("I got the exception") 
+0

Dies wird nicht meinem Zweck dienen. Siehe meinen letzten Kommentar zu der Frage ... –