PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Python: bei Fehler springe nach xx, wie geht?


Schoof
2009-10-20, 11:39:53
Hi,

ich hab da ein kleines Problem und ich komme einfach nicht weiter.
Ich habe von einem Kollegen einen Code übernommen und diesen muss ich nun erweitern.
Folgendes Problem,
Ich habe eine try-except Funktion.
try:
sende Befehl xx
erwarte Telegramm xy
except:
Stop

nun ist das so, der Befehl wird gesendet, wenn ich kein Telegramm empfange dann Stop.
Nun will ich aber das das Programm weiter läuft und ein anderen Befehl sendet
try:
sende Befehl xx
erwarte Telegramm xx
except:
try:
sende Befehl yy
erwarte Telegramm yy
except:
Stop

Also falls Telegramm xx nicht empfangen wird, soll Befehl yy gesendet werden. Aber irgendwie klappt das net. Komme einfach net weiter.
Weis einer von euch wie das klappen soll oder muss ich das komplet anders schreiben?
MFG

Edit: was ich noch vergessen habe, das Programm soll aber beide Befehle nacheinander schicken, nur wenn das Telegramm xx nicht empfangen hat, dann soll er mit Befehl yy weiter machen. Wenn das Telegramm xx empfangen wird, wird auch Befehl yy versendet.

The_Invisible
2009-10-20, 12:34:47
wie wärs mit:


try:
sende Befehl xx
erwarte Telegramm xx
except:
Stop xx
finally:
try:
sende Befehl yy
erwarte Telegramm yy
except:
Stop yy


mfg

Schoof
2009-10-20, 12:57:49
glaub ich hab das bisl doof geschrieben,
also es soll ein Befehl gesendet werden und danach ein Telegramm empfangen. Falls das Telegramm nicht empfangen wird soll der nächste Befehl (ein anderer) gesendet werden und dann das Telegramm empfangen werden. Es sind aber nicht nur 2 Befehle/Telegramme sondern es werden mind 9 sein. Also es soll nach jedem Befehl geschaut werden ob das Telegramm zurück kommt, wenn nicht dann mache mit dem nächsten Befehl weiter. Wenn das Telegramm empfangen wird, soll auch mit dem nächsten Befehl weitergemacht werden.
Ganz am Ende kommt dann Stop
Soweit ich weis darf ich nur 1x finally am Ende schreiben. Aber dazwischen mit try und except eier ich nun rum.

Schoof
2009-10-20, 15:09:11
habs mittlerweile hinbekommen
einfach
try:
Befehl xx
Telegramm xx
except:
pass <- das hat gefählt
try:
Befehl yy
Telegramm yy
except:
pass
usw usw usw
sobald ich in einem try einen Fehler habe, springt er in den nächsten try und macht dort weiter. genau das was ich wollte.
mfg