Frage

Ich bin mit libcurl eine Webseite DL, dann für die Daten ich es bin Scannen und mit einem der Links, etwas zu tun. Doch hin und wieder ist die Seite anders dann außer i so i schlechte Daten zu extrahieren und pycurl löst eine Ausnahme. Ich versuchte, die Ausnahme-Namen für pycurl zu finden, hatte aber kein Glück.

Gibt es eine Möglichkeit ich die Zurückverfolgungs bekommen kann eine Funktion auszuführen, so kann ich die Datei-Dump, so dass ich an der Dateieingabe schauen und sehen waren mein Code ist schief gelaufen?

War es hilfreich?

Lösung

sys.excepthook hier helfen können, wo Sie setzt einen globalen Exception-Handler. Ich bin nicht sicher, wie pycurl Ausnahmen behandelt werden, ist es eine verbindliche Bibliothek zu sein, aber es wird wahrscheinlich auf eine generische Funktion zuzuweisen arbeiten. So etwas wie:

>>> import sys
>>> 
>>> def my_global_exception_handler(type, value, traceback):
...     print traceback
...     sys.exit()
... 
>>> sys.excepthook = my_global_exception_handler
>>> raise
<traceback object at 0xb7cfcaa4>

Diese Ausnahme-Hook-Funktion leicht eine Instanzmethode, die den Zugriff auf die Datei hat sein könnte, dass der Bedarf Dumping.

Andere Tipps

Sie können einen generischen Exception-Handler verwenden.

logging.basicConfig( file="someFile.log", level=logging.DEBUG )
logger= logging.getLogger( __name__ )
try:
    curl = pycurl.Curl()
    curl.setopt(pycurl.URL, url)
    # etc.
    curl.perform()
    curl.close
    logger.info( "Read %s", url )
except Exception, e:
    logger.exception( e )
    print e, repr(e), e.message, e.args
    raise
logging.shutdown()

Das wird ein schönes Protokoll schreiben, die die Ausnahmeinformationen haben, die Sie suchen.

Können Sie fangen alle Ausnahmen irgendwo im Hauptblock und verwenden sys.exc_info () für den Rückruf Informationen und melden Sie sich, dass auf Ihre Datei. exc_info () gibt Ausnahmetyp nicht nur, aber auch Zurückverfolgungs nennen so sollte es Informationen, was schief gelaufen ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top