【问题标题】:python runtime error, can dump a file?python运行时错误,可以转储文件吗?
【发布时间】:2009-02-15 12:29:46
【问题描述】:

我正在使用 libcurl 对网页进行 DL,然后我正在扫描它以获取数据并使用其中一个链接进行操作。但是,有时页面与 i 不同,因此我提取了错误数据并且 pycurl 抛出异常。我尝试找到 pycurl 的异常名称,但没有运气。

有没有办法让我获得回溯来执行一个函数,以便我可以转储文件,以便我可以查看文件输入并查看我的代码是否出错了?

【问题讨论】:

    标签: python error-handling pycurl


    【解决方案1】:

    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>
    

    这个异常钩子函数很容易成为一个实例方法,可以访问需要转储的文件。

    【讨论】:

      【解决方案2】:

      您可以使用通用异常处理程序。

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

      这将编写一个很好的日志,其中包含您正在寻找的异常信息。

      【讨论】:

        【解决方案3】:

        您能否在主块中的某处捕获所有异常并使用 sys.exc_info() 获取回调信息并将其记录到您的文件中。 exc_info() 不仅返回异常类型,还调用回溯,因此应该有信息出错。

        【讨论】:

          猜你喜欢
          • 2019-01-20
          • 1970-01-01
          • 2012-03-28
          • 2014-05-04
          • 1970-01-01
          • 2014-03-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多