我正在使用libcurl来浏览网页,然后我正在扫描数据并使用其中一个链接进行操作。然而,偶尔页面不同然后我除了因此我提取坏数据和pycurl引发异常。我尝试为pycurl找到异常名称,但没有运气。
有没有办法让我可以获得回溯来执行一个函数,这样我就可以转储文件,这样我就可以查看文件输入了,看看我的代码出错了?
答案 0 :(得分:3)
sys.excepthook可以在这里帮助您,您可以在其中设置全局异常处理程序。我不确定如何处理pycurl异常,它是一个绑定库,但它可能会将它重新分配给泛型函数。类似的东西:
>>> 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>
此异常挂钩函数很容易成为可以访问需要转储的文件的实例方法。
答案 1 :(得分:3)
您可以使用通用异常处理程序。
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()
这将写一个很好的日志,其中包含您正在寻找的异常信息。
答案 2 :(得分:2)
您可以捕获主块中某处的所有异常,并使用sys.exc_info()获取回调信息并将其记录到您的文件中。 exc_info()不仅返回异常类型,还会调用traceback,因此应该知道出了什么问题。