Domanda

Sto usando libcurl al DL una pagina web, allora io sono la scansione per i dati e fare qualcosa con uno dei link. Tuttavia, di tanto in tanto la pagina è diversa poi ho eccezione in tal modo i estrarre i dati danneggiati e pycurl genera un'eccezione. Ho provato a trovare il nome di eccezione per pycurl ma non ha avuto fortuna.

C'è un modo posso ottenere il traceback per eseguire una funzione di modo che io possa scaricare il file in modo posso guardare in ingresso file e vedere erano il mio codice è andato storto?

È stato utile?

Soluzione

sys.excepthook può aiutare qui, dove è possibile impostare un gestore di eccezioni globale. Io non sono sicuro di come pycurl eccezioni vengono gestite, essendo una biblioteca vincolante, ma sarà probabilmente il lavoro di riassegnare ad una funzione generica. Qualcosa di simile:

>>> 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>

Questa funzione hook eccezione potrebbe facilmente essere un metodo di istanza che ha accesso al file che deve dumping.

Altri suggerimenti

È possibile utilizzare un gestore di eccezioni generico.

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()

Questa scriverà un bel registro che contiene le informazioni eccezione che stai cercando.

Puoi prendere tutte le eccezioni da qualche parte nel blocco principale e utilizzare sys.exc_info () per informazioni di callback e accedere che al file. exc_info () restituisce non solo tipo di eccezione, ma anche chiamare traceback quindi non ci dovrebbero informazioni che cosa è andato storto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top