特殊处理在python程序中不起作用

时间:2014-02-04 05:00:25

标签: python exception-handling

# phone num
    try:
        phone=soup.find("div", "phone-content")
        for a in phone:
            phone_result= str(a).get_text().strip().encode("utf-8")
        print "Phone information:", phone_result
    except ValueError:
        phone_result="Error"

我的程序在出现单代码错误时停止但我想使用try除了避免终止程序。我怎么能这样做?

我得到了不同类型的错误。无论错误是什么,我想要一些不会终止循环的东西。只是我想跳过有错误的循环部分

2 个答案:

答案 0 :(得分:1)

使用

try:
    ...
except:
    ...

您可以随时捕获try块尝试中的每个错误。这个问题是你甚至会抓住KeyboardInterruptSystemExit

但是,最好抓住你准备处理的错误,这样你就不会隐藏错误。

try:
    ...
except UnicodeError as e:
    handle(e)

至少,您至少应该像抓住StandardError一样具体。

使用您的代码演示:

try:
    phone=soup.find("div", "phone-content")
    for a in phone:
        phone_result= str(a).get_text().strip().encode("utf-8")
    print "Phone information:", phone_result
except StandardError as e:
    phone_result="Error was {0}".format(e)

请参阅异常层次结构以帮助您衡量错误处理的特异性。 http://docs.python.org/2/library/exceptions.html#exception-hierarchy

答案 1 :(得分:0)

我认为你可以先尝试这样的事情:

try:
    whatever()
except Exception as e:
    print e

然后,您将获得所需的(!)异常[如果已存在],然后将其更改为except somethingelse

或者你可以选择看起来像下面的自定义异常,但必要时你会raise

class ErrorWithCode(Exception):
    def __init__(self, code):
        self.code = code
    def __str__(self):
        return repr(self.code)