我有一个程序,它从twitter API请求信息,并且我不时收到错误:
IOError: [Errno socket error] [Errno 54] Connection reset by peer
我想知道如何让脚本保持运行(循环)。我知道这与此有关:
try:
except IOError:
但我无法弄清楚。
答案 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
完整的构造可能更复杂,包括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
忽略它(可能记录它等)。
为此,您需要在try
和except
块中包含可能失败的代码,如下所示:
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>