即使IOError,如何继续python脚本循环?

时间:2012-01-17 23:01:30

标签: python exception exception-handling twitter

我有一个程序,它从twitter API请求信息,并且我不时收到错误:

IOError: [Errno socket error] [Errno 54] Connection reset by peer

我想知道如何让脚本保持运行(循环)。我知道这与此有关:

try:

except IOError:

但我无法弄清楚。

5 个答案:

答案 0 :(得分:5)

更简单的结构是这样的:

my_while_or_for_loop:
    some_code_here_maybe
    try:
        my_code_or_function_that_sometimes_fails()
    except IOError:
        pass   # or some code to clean things that went wrong or to log the failure
    some_more_code_here_maybe

您想要read the docs

完整的构造可能更复杂,包括try/except/else/finally From an example in docs

>>> def divide(x, y):
...     try:
...         result = x / y
...     except ZeroDivisionError:
...         print "division by zero!"
...     else:
...         print "result is", result
...     finally:
...         print "executing finally clause"

答案 1 :(得分:1)

这是文档关于exceptions ...

简单地说,如果代码块在某些情况下可能会导致某些已知错误(如输入输出错误),则可以定义try-except块来处理此类错误。这将使您的脚本保持运行状态,并允许您根据不同的错误状态执行不同的代码块....喜欢:

try:
    <do something>
except IOError:
    <an input-output error occured, do this...>
except ValueError:
    <we got something diffrent then we expected, do something diffrent>
except LookupError:
    pass # we do not need to handle this one, so just kkeep going...
except: 
    <some diffrent error occured, do somethnig more diffrent> 

如果您什么都不做并继续,可以使用pass,例如:

try:
    <do something>
except:
    pass

答案 2 :(得分:1)

您缺少的部分是pass。这是一个简单的 no-op 表达式,它存在,因为Python没有空块。

更长的解释:

您需要做的是捕获抛出的IOError异常,并使用pass忽略它(可能记录它等)。

为此,您需要在tryexcept块中包含可能失败的代码,如下所示:

try:
    <code that can fail>
except IOError:
    pass

这样做是明确忽略IOErrors,而不是忽略其他人。如果您想忽略所有例外情况,只需删除IOError部分,然后该行显示except:

您应该阅读Python教程,特别是关于error handling的部分。

答案 3 :(得分:0)

试试这个:

try:
    <do something - you code here>
except IOError: pass

答案 4 :(得分:0)

或者为什么不呢:

with ignored(IOError):
    <code that can fail>