Hey,
Ich habe eine Funktion die eine Liste returnd, aber diese funktion funktioniert nicht immer. Also, wenn die funktioniert gibt die mir eine Liste wieder, aber was soll ich machen, wenn die nicht funtkioniert. Soll ich mir dann eine Leere liste wiedergeben lassen, oder einfach einen bool?
Was wiedergeben wenn funktion fehlschlägt?
Das hängt ganz klar davon ab, was Du wie erreichen willst.
Sag' mal, meinst Du nicht, das diese Frage reichlich unspezifisch ist? Oft ist es sinnvoll, wenn Funktionen immer die selbe Zahl von Rückgabeelementen (im Tuple) und dieselben Rückgabetypen haben. Aber u. U. eben nicht.
Sag' mal, meinst Du nicht, das diese Frage reichlich unspezifisch ist? Oft ist es sinnvoll, wenn Funktionen immer die selbe Zahl von Rückgabeelementen (im Tuple) und dieselben Rückgabetypen haben. Aber u. U. eben nicht.
Naja ich weiß es eben nicht. Ich will ein Client Server programm schreiben, bei dem Der client eine Anfrage stellt und der Server mit "hat geklappt" und den Rückgabewerten antwortet. Wenn es aber nicht klappt, gibt es auch keine Rückgabewerte. Wenn die liste elemente hat, dann kommt sowas dabei raus:CM hat geschrieben:Das hängt ganz klar davon ab, was Du wie erreichen willst.
Sag' mal, meinst Du nicht, das diese Frage reichlich unspezifisch ist? Oft ist es sinnvoll, wenn Funktionen immer die selbe Zahl von Rückgabeelementen (im Tuple) und dieselben Rückgabetypen haben. Aber u. U. eben nicht.
Code: Alles auswählen
>>> bool([])
False
>>> bool([False, False])
True
>>>
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
;-)
Das hängt davon ab, ob eine leere Liste für die Weiterverarbeitung in Ordnung ist. Wenn nicht, dann würde ich gar nichts zurückgeben sondern eine Exception werfen.INFACT hat geschrieben:Ich habe eine Funktion die eine Liste returnd, aber diese funktion funktioniert nicht immer. Also, wenn die funktioniert gibt die mir eine Liste wieder, aber was soll ich machen, wenn die nicht funtkioniert. Soll ich mir dann eine Leere liste wiedergeben lassen, oder einfach einen bool?
Ich glaube ich habe mich für die leere Liste entschieden, dann kann ich mit if überprüfen ob der Rückgabewert die richtige länge hat./me hat geschrieben:Das hängt davon ab, ob eine leere Liste für die Weiterverarbeitung in Ordnung ist. Wenn nicht, dann würde ich gar nichts zurückgeben sondern eine Exception werfen.INFACT hat geschrieben:Ich habe eine Funktion die eine Liste returnd, aber diese funktion funktioniert nicht immer. Also, wenn die funktioniert gibt die mir eine Liste wieder, aber was soll ich machen, wenn die nicht funtkioniert. Soll ich mir dann eine Leere liste wiedergeben lassen, oder einfach einen bool?
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
;-)
@INFACT: Das kannst Du dann aber auch vergessen -- absichtlich oder unabsichtlich. Um Ausnahmen *muss* man sich kümmern. Irgendwelche speziellen Rückgabewerte bei Fehlern sind in der Regel unpraktisch.
Aber wenn ich dass versuche gibt mir das sowieso einen Fehler:BlackJack hat geschrieben:@INFACT: Das kannst Du dann aber auch vergessen -- absichtlich oder unabsichtlich. Um Ausnahmen *muss* man sich kümmern. Irgendwelche speziellen Rückgabewerte bei Fehlern sind in der Regel unpraktisch.
Code: Alles auswählen
[][1]
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
;-)
@INFACT: Erstens gibt das einen Fehler an einer anderen Stelle und nicht da wo er im Quelltext da erste mal bemerkt wurde, und zweitens kann man mit Listen ja auch noch andere Sachen machen, die keinen Fehler provozieren sondern eventuell nur falsches Verhalten des Programms.
Hmm... überredetBlackJack hat geschrieben:@INFACT: Erstens gibt das einen Fehler an einer anderen Stelle und nicht da wo er im Quelltext da erste mal bemerkt wurde, und zweitens kann man mit Listen ja auch noch andere Sachen machen, die keinen Fehler provozieren sondern eventuell nur falsches Verhalten des Programms.
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
;-)
Da das Ganze eine Client-Server-Anwendung werden soll fände ich es sinnvoll clientseitig dann auch ein paar Informationen zu erhalten was nicht funktioniert hat. Deshalb würde ich generell das erste Listenelement als Statustext o.Ä. benutzen und dann Clientseitig auswerten. So alla:
Ob du dann den zurueckgegeben Text ausgibst bzw. weiterverarbeitest oder einfach nur "if ergebnis[0]" prüfst bleibt dann dir überlassen.
Code: Alles auswählen
>>> def server_func(l):
... result = [None]
... try:
... for item in l:
... result.append(item/2.0)
... except:
... result[0] = 'Fehler bei der Berechnung!'
...
... return result
...
>>> def client_func(elemente):
... ergebnis = server_func(elemente)
... if ergebnis[0]:
... print 'Das war nix!\nGrund: %s\nBerechnete Werte:' % ergebnis[0], ergebnis[1:]
... else:
... print 'Ergebnis: ' , ergebnis[1:]
...
>>> client_func([1,2,3,4])
Ergebnis: [0.5, 1.0, 1.5, 2.0]
>>> client_func([1,2,3,4,'a',5,6])
Das war nix!
Grund: Fehler bei der Berechnung!
Berechnete Werte: [0.5, 1.0, 1.5, 2.0]
>>>
Zuletzt geändert von dahaze am Dienstag 6. April 2010, 14:25, insgesamt 1-mal geändert.
Himmel noch eins: Genau um solchen fehlerträchtigen Mist nicht machen zu müssen wurden Ausnahmen erfunden!
Natürlich ist ein "blankes":
sehr schlecht da man den Grund für die Exception wegbügelt. Das muss sicher noch ausgebaut werden.
Aber eine serverseitig nicht abgefangene Exception ist doch noch gravierender!?
Es ging mir hauptsächlich auch um die zurückgegebene Liste....
Code: Alles auswählen
try:
pass
except:
pass
Aber eine serverseitig nicht abgefangene Exception ist doch noch gravierender!?
Es ging mir hauptsächlich auch um die zurückgegebene Liste....