Python3继承异常

2024-10-06 13:09:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我为解析网站创建了一个小类。在

出现URLError异常:

def visit(self, url, referer=None, data=None):

    (...)

    # Return BeautifulSoup instance.
    try:
        return BeautifulSoup(self.opener.open(self.request))
    # URLError.
    except urllib.error.URLError as error:
        return error

一切正常。但我需要创建这个函数的包装器。在

^{pr2}$

Get_links函数在出现URLError(403,404,whatever…)之前也能正常工作。我怎样才能解决这个问题?是否存在继承例外?在


Tags: 函数selfnoneurldatareturn网站def
1条回答
网友
1楼 · 发布于 2024-10-06 13:09:21

您的visit()函数捕获异常并返回一个URLError对象,您正在调用find_all(),但它没有。在

类似于:

self.links = self.visit(*args, **kwargs)
if not isinstance(self.links, urllib.error.URLError):
    self.links = self.links.find_all('a')
else:
    # Do something with an HTTP Error

应该能给你一个流动的概念。您无法在外部get_links()中捕获该异常,因为它已经被visit()捕获并返回。在

如果你想在get_links()中捕捉到它,请更改

^{pr2}$

raise error

在您的visit()方法中,虽然您将再次抛出刚刚捕获到的异常,但我不确定这是否是您想要的行为。在

相关问题 更多 >