我正在使用 libcurl 对网页进行 DL,然后我正在扫描它以获取数据并使用其中一个链接做一些事情。但是,有时页面与 i 不同,因此我提取了错误数据并且 pycurl 抛出异常。我尝试找到 pycurl 的异常名称,但没有运气。
有没有办法我可以让回溯来执行一个函数,这样我就可以转储文件,这样我就可以查看文件输入并查看我的代码是否出错了?
我正在使用 libcurl 对网页进行 DL,然后我正在扫描它以获取数据并使用其中一个链接做一些事情。但是,有时页面与 i 不同,因此我提取了错误数据并且 pycurl 抛出异常。我尝试找到 pycurl 的异常名称,但没有运气。
有没有办法我可以让回溯来执行一个函数,这样我就可以转储文件,这样我就可以查看文件输入并查看我的代码是否出错了?
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>
这个异常钩子函数很容易成为一个实例方法,它可以访问需要转储的文件。
您可以使用通用异常处理程序。
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()
这将编写一个很好的日志,其中包含您正在寻找的异常信息。
您能否在主块中的某处捕获所有异常并使用 sys.exc_info() 获取回调信息并将其记录到您的文件中。exc_info() 不仅返回异常类型,而且还调用回溯,因此应该知道出了什么问题。