使用函数捕获Python中的错误

时间:2018-01-16 11:49:23

标签: python error-handling beautifulsoup

如果没有元素,我想从BeautifulSoup中捕获错误。目前我正在使用通常的方法:

try:
    var1 = soup.div.text
except AttributeError:
    var1 = 'N/A'

但是,我现在不得不重复这一点,因此想知道是否有可能编写一个自定义函数来执行此操作,我可以重用它。例如:

def customerrorcatcher(something):
        ....
        ....


customerrorcatcher(soup.div.text)

1 个答案:

答案 0 :(得分:4)

您可以这样做:

def get_attribute(obj, attr, default=None, on_error=None):
    try:
        return getattr(obj, attr)
    except AttributeError as e:
        if on_error: on_error(e)
        return default

然后你会这样称呼:

text = get_attribute(soup.div, 'text', default='default_text', on_error=_logger.error)

您甚至可以嵌套通话:

text = get_attribute(get_attribute(soup, 'div'), 'text', default='default_text', on_error=_logger.error)