Dies ist mein erstes Mal mit SimpleHTTPServer arbeiten, und ehrlich gesagt mein erstes Mal mit Web-Servern im Allgemeinen arbeiten, und ich habe ein frustrierendes Problem. Ich starte meinen Server (über SSH) und dann werde ich versuchen, darauf zuzugreifen und alles wird gut. Aber ich werde ein paar Stunden später wiederkommen und der Server wird nicht mehr laufen. Und zu diesem Zeitpunkt hat die SSH-Sitzung getrennt, so dass ich nicht sehen kann, ob es Fehlermeldungen gab. (Ja, ich weiß, ich sollte etwas wie Bildschirm verwenden, um die Shell-Nachrichten zu speichern - versuche das jetzt, aber ich muss warten, bis es wieder herunterfährt.)Python SimpleHTTPServer geht weiter und ich weiß nicht, warum
Ich dachte, es könnte nur sein, dass mein Code war Ich habe eine Ausnahme geworfen, da ich keine Fehlerbehandlung hatte, aber ich fügte hinzu, was ein hübscher Catch-All-Try/Catch-Block sein sollte, und ich habe immer noch das Problem. (Ich fühle mich wie das ist wahrscheinlich nicht die beste Methode zur Fehlerbehandlung, aber ich bin neu in diesem an ... so lassen Sie mich wissen, ob es ein besserer Weg, dies zu tun)
class MyRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
# (this is the only function my request handler has)
def do_GET(self):
if 'search=' in self.path:
try:
# (my code that does stuff)
except Exception as e:
# (log the error to a file)
return
else:
SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
Hat jemand einen Rat um Dinge zu überprüfen oder um das Problem zu diagnostizieren? Höchstwahrscheinlich, denke ich, ist es, dass mein Code irgendwo anders abstürzt ... aber wenn es etwas Besonderes gibt, sollte ich wissen, wie SimpleHTTPServer funktioniert, lass es mich wissen.
Als ersten Schritt könnten Sie eine 'exception BaseException als e:' hinzufügen, um alle zu erfassen die anderen Ausnahmen, die wie 'SystemExit' ausgelöst werden können, wenn Ihr Code dies versehentlich anruft. –
@ TadhgMcDonald-Jensen Fängt BaseException mehr Ausnahmetypen als Ausnahme? – ekl
Ja, wenn versucht wird, eine Ausnahme auszulösen, die keine Unterklasse von BaseException ist, wird 'TypeError: Exceptions müssen von BaseException abgeleitet werden –