Question

J'utilise libcurl à DL une page Web, alors je suis numérisant pour les données et de faire quelque chose avec l'un des liens. Cependant, une fois dans un certain temps la page est différente, alors je excepte donc j'extraire les mauvaises données et pycurl génère une exception. J'ai essayé de trouver le nom d'exception pour pycurl mais n'a pas eu de chance.

Est-il possible que je peux obtenir le retraçage pour exécuter une fonction pour que je puisse vider le fichier afin que je puisse regarder à l'entrée du fichier et voir étaient mon code a mal tourné?

Était-ce utile?

La solution

sys.excepthook peut vous aider ici, où vous pouvez définir un gestionnaire global d'exception. Je ne sais pas comment les exceptions sont gérées pycurl, étant une bibliothèque obligatoire, mais il sera probablement travailler à réaffecter à une fonction générique. Quelque chose comme:

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

Cette fonction crochet d'exception pourrait facilement être une méthode d'instance qui a accès au dossier qui a besoin de dumping.

Autres conseils

Vous pouvez utiliser un gestionnaire d'exception générique.

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

rédigera un bon journal qui contient les informations d'exception que vous cherchez.

Pouvez-vous attraper toutes les exceptions quelque part dans le bloc principal et utiliser sys.exc_info () pour obtenir des informations de rappel et connectez-vous que votre fichier. exc_info () retourne pas seulement le type d'exception, mais aussi appeler retraçage donc il devrait y avoir des informations ce qui a mal tourné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top