Ich entwickle einen asynchronen Webdienst mit Twisted Klein. Ein Teil des Codes ist wie folgt:Wie vermeidet man den Befehl yield in Python, löst jedes Mal Exceptions aus?
@inlineCallbacks
def test(input1):
try:
result = yield function(input1)
print result
returnValue(result)
except:
returnValue("None")
pass
Ich habe diese test
Funktion als Teil meines Web-Service, genannt jedesmal, wenn ich die test
von einer anderen Funktion in returns „None“. Auf dem Serverbildschirm wird jedoch das richtige Ergebnis gedruckt (die Zeile print result
in try wird korrekt ausgeführt, nur die returnValue(result)
wird nicht verwendet). Ich bin mit asynchronen Codierungen nicht sehr vertraut, aber sollte ich etwas vorsichtiges ausprobieren, außer mit der Ausbeute? Vielen Dank.
zurückzukehren Warum sind Sie mit einem nackten 'except' mit? Sie sollten den spezifischen Ausnahmetyp abfangen, den Sie erwarten. Ich weiß nicht viel über Twisted Klein, aber eine schnelle Google-Suche sagt, dass sie [Ausnahmen verwenden, um Coroutinen zu simulieren] (http://tavendo.com/blog/post/going-asynchronous-from-flask-to-twisted) -klein /), so würde ein blankes 'außer' mit dem ziemlich hart schrauben. – user2357112
Also ändere ich dies aus einem Flaschencode, und ich rufe eine API auf, die die Ausnahme zurückwerfen könnte, ich will nicht, dass sie abstürzt, also benutze ich try/except, um das zu tun. Vielleicht sollte ich das bloß entfernen und sehen, wie es funktioniert? – JLTChiu
Es funktionierte tatsächlich, nachdem ich das bloße ausgenommen entfernte. Ich denke, ich muss dann alle möglichen Ausnahmen von der API angeben. Ich möchte Sie als die richtige Antwort bezeichnen, aber Sie sind in einem Kommentar – JLTChiu