zul*_*ion 7 python sockets exception
我有以下代码:
try:
while 1:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.settimeout(5);
s.connect((HOST,PORT))
print("before send")
#time.sleep(10);
#s.sendall('GET / HTTP/1.1\r\nConnection: Keep-Alive\r\nHost: www.google.lt\r\n\r\n')
data=s.recv(52)
print("after send");
s.close()
if string.find(data,"HTTP/1.1 200 OK") == -1:
print("Lost Connection")
print(data)
time.sleep(2)
except KeyboardInterrupt:
print("CTRL C occured")
except socket.error:
print("socket error occured: ")
except socket.timeout:
print("timeout error")
Run Code Online (Sandbox Code Playgroud)
我已经评论了sendall函数来测试recv如何生成超时异常.但问题是我得到socket.error异常.如果我将最后一行代码更改为:
except socket.timeout:
print("timeout error")
except socket.error:
print("socket error occured: ")
Run Code Online (Sandbox Code Playgroud)
然后我得到socket.timeout异常.那么真正产生了什么异常呢?
Pav*_*sov 20
socket.timeout是.的子类socket.error.真的是socket.timeout.当你抓到socket.error第一个时,你会发现一个更普遍的情况.
>>> issubclass(socket.timeout, socket.error)
True
Run Code Online (Sandbox Code Playgroud)
这段代码是正确的:
except socket.timeout:
print("timeout error")
except socket.error:
print("socket error occured: ")
Run Code Online (Sandbox Code Playgroud)
试着特别抓住socket.timeout,然后其他socket.error的.
| 归档时间: |
|
| 查看次数: |
13177 次 |
| 最近记录: |