# 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除了避免终止程序。我怎么能这样做?
我得到了不同类型的错误。无论错误是什么,我想要一些不会终止循环的东西。只是我想跳过有错误的循环部分
答案 0 :(得分:1)
使用
try:
...
except:
...
您可以随时捕获try块尝试中的每个错误。这个问题是你甚至会抓住KeyboardInterrupt
和SystemExit
但是,最好抓住你准备处理的错误,这样你就不会隐藏错误。
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)