Python:错误不会停止脚本

标签 python parsing error-handling

我编写了一个解析一些网页的 python 守护进程。但有时会因为某些页面与解析器不兼容而出现错误。

实际上的问题是:如何使脚本在出现错误时不停止,而是继续工作?如果可能的话,将所有错误记录在日志文件中。

谢谢。

我的部分代码:

# row - array of links
for row in result:
    page_html = getPage(row['url'])
    self.page_data = row

    if page_html != False:
        self.deletePageFromIndex(row['id'])
        continue

    parser.mainlink = row['url']
    parser.feed(page_html)

    links = parser.links # get links from page
    words = wordParser(page_html); # words from page

    # insert data to DB
    self.insertWords(words)
    self.insertLinks(links)

    # print row['url'] + ' parsed. sleep... '

    self.markAsIndexed(row['id'])
    sleep(uniform(1, 3)) # sleep script

最佳答案

您可以执行以下操作:

import logging
should_abort = False

def do_stuff():
    global should_abort
    ...

def main():
    while not should_abort:  # your main loop
        try:
            do_stuff()
        except MyException1, e:
            logging.exception('GOT MyException1 %s', e)
        except MyException2, e:
            logging.exception('GOT MyException2 %s', e)
        except Exception, e:
            logging.exception('UNKNOWN EXCEPTION %s', e)

这仍然允许您停止使用 ctrl-C,因为 KeyboardInterrupt 派生自 BaseException,而不是 Exception

关于Python:错误不会停止脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15354007/

相关文章:

php - 在模型或 Controller 中处理错误?

python - django-mptt 在标准 ModelAdmin 中嵌套下拉菜单?

Python 3.1 - 网格模拟

ios - 如何从 iOS 中 xml 文件的 d<description > 标签下的 <img src> 标签中提取图像 url?

parsing - ANTLR char词汇错误

node.js - 了解 Node ReferenceError转储

ggplot2 - ggplot2 的命名空间加载失败,网格的描述失败

python - 如何在 matplotlib 中绘制非正方形图形大小的圆形饼图

python - 将 RGB 视频转换为灰度视频以减小文件大小

java - 如何解析 Java 中由关键字分隔的日志行?