python运行时错误,可以转储文件吗?

发布于 2024-07-13 15:10:29 字数 191 浏览 7 评论 0原文

我正在使用 libcurl 深度学习网页,然后扫描其中的数据并使用其中一个链接执行某些操作。 然而,偶尔页面会与我不同,除非因此我提取了错误的数据并且 pycurl 抛出异常。 我尝试找到 pycurl 的异常名称,但没有成功。

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

I am using libcurl to DL a webpage, then i am scanning it for data and doing something with one of the links. However, once in a while the page is different then i except thus i extract bad data and pycurl throws an exception. I tried finding the exception name for pycurl but had no luck.

Is there a way i can get the traceback to execute a function so i can dump the file so i can look at the file input and see were my code went wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

三岁铭 2024-07-20 15:10:29

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>

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

sys.excepthook may help you here, where you can set a global exception handler. I am not sure how pycurl exceptions are handled, it being a binding library, but it will probably work to reassign it to a generic function. Something like:

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

This exception hook function could easily be an instance method that has access to the file that needs dumping.

吃颗糖壮壮胆 2024-07-20 15:10:29

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

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

这将编写一个漂亮的日志,其中包含您正在查找的异常信息。

You can use a generic exception handler.

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

This will write a nice log that has the exception information you're looking for.

梦里°也失望 2024-07-20 15:10:29

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

Can you catch all exceptions somewhere in the main block and use sys.exc_info() for callback information and log that to your file. exc_info() returns not just exception type, but also call traceback so there should information what went wrong.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文