我正在研究一個基本的套接字客戶端程序在Python中,我不完全確定如何處理異常。這是我到現在爲止所做的:Python套接字編程 - 異常處理
TCP_IP = '..............'
TCP_PORT = 4950
MESSAGE = "o3"
BUFFER_SIZE = 2048
data = ""
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5.0)
try:
s.connect((TCP_IP, TCP_PORT))
except socket.error:
#write error code to file
s.close()
try:
s.sendall(MESSAGE)
except socket.error:
#write to file or whatever
s.close()
try:
data = s.recv(BUFFER_SIZE)
except socket.error:
#write to file or whatever
s.close()
finally:
s.close()
該代碼工作正常,但我不確定是否應該嵌套try/catch塊嗎?我應該把socket.socket
放入try/catch塊嗎?
第二個問題,s.settimeout()
在我的情況下會做什麼?據我瞭解的文件,它會在5秒後拋出異常,但爲什麼?只是connect
還是會這樣做sendall
和recv
?
謝謝你這個偉大的答案!還有一個問題,當我使用原始版本(try/catch塊一個接一個地)並且異常被socket.connect()捕獲時會發生什麼?我猜所有套接字操作都被執行了,這是不好的? –