从异常中捕获有关已执行代码行的信息

时间:2015-02-15 07:42:53

标签: python xpath error-handling

我正在使用xpath库对HTML文档执行一系列lxml次查询。众所周知,网站所有者通常是善变的,可以在几乎没有注意的情况下改变页面结构。

我有一个用于捕获和处理错误的现有工作流程。基本上我有一个自定义日志处理程序,它捕获错误的描述(发生的位置等)以及发生错误的原始HTML文档。

此时我想要做的是以编程方式开始记录特定xpath查询失败的次数。我目前的工作流程是梳理大量日志,并查找处理特定查询所显示的各种代码行的异常。我希望我可以优化它。

try:
    result1 = document.xpath('query1')[0]
    result2 = document.xpath('query2')[0]
    result3 = document.xpath('query3')[0]
except LookupError:
    log.exception('Some more details', document)

我的问题:有没有办法以编程方式推断上述try / catch块中哪个查询实际失败了?显然,任何三个查询都可能生成LookupError。如何在没有将每个包装在try / catch块中的情况下将其固定为一个?

编辑以澄清

实际上我的块有更多底层代码。 for循环不会有效。

try:
    result1 = document.xpath('query1')[0]
    if some_condition:
        result2 = document.xpath('query2')[0]
    else:
        result3 = document.xpath('query3')[0]
    # More checking, etc.
except LookupError:
    log.exception('Some more details', document)

1 个答案:

答案 0 :(得分:1)

查找哪个查询出错:

import traceback
print traceback.format_exc().split("\n")[2].strip()