我有一个try/except块,它发送消息并等待来自客户端的确认。如果客户端终止,pickle将引发eoferor,但下面的代码不会捕获错误并执行正常关机。而是打印堆栈跟踪。我认为这与“except socket.error,eoferor:”一行有关-我是否使用了错误的语法来处理socket.error和eoferor?
try:
msgs = [1]
self.sock.send(pickle.dumps(msgs))
rdy = pickle.loads(self.sock.recv(2097152))
except socket.error, EOFError:
print 'log socketmanager closing'
self.terminate()
break
break
导致错误,它只能在for
循环或try/finally
块中使用,而不能在try/except
中使用,请参见docs和more。在Python 2.x中,表单
except a, b
捕获类型为a
的异常并将其分配给名为b
的变量。在您的情况下,这将导致EOFError
被忽略。请改为:编辑:详细说明一下,Python 3.0中的新语法,以及2.6+中用于捕获异常值的新语法是
except a as b
。相关问题 更多 >
编程相关推荐