如果這樣的蟒蛇碼,沒有錯誤報告:爲什麼我在這個tr-catch-finally模塊中出錯?
try:
sock=socket(AF_UNIX, SOCK_STREAM)
sock.settimeout(20)
sock.connect(sock_name)
test_vm_connectivity(sock)
except Exception as e:
process_output(e)
finally:
sock.settimeout(None)
sock.close()
如果這樣的蟒蛇碼,有錯誤報道,我不知道爲什麼:
for sock_name in vm_socks:
try:
sock=socket(AF_UNIX, SOCK_STREAM)
sock.settimeout(20)
sock.connect(sock_name)
test_vm_connectivity(sock)
except Exception as e:
process_output(e)
finally:
sock.settimeout(None)
sock.close()
錯誤:
[[email protected] tests]# python run-vhost
global name 'socket' is not defined
Traceback (most recent call last):
File "run-vhost", line 237, in <module>
test_all()
File "run-vhost", line 215, in test_all
sock.settimeout(None)
UnboundLocalError: local variable 'sock' referenced before assignment
我不知道這兩個代碼有什麼不同。對於代碼2,如何更正它,請幫助,謝謝〜
在碼2,你是通過sock_name'的'不同的值迭代,以及這些原因之一碰撞。 – GLR
如果套接字(AF_UNIX,SOCK_STREAM)'口令,然後'sock'沒有被分配,並且'finally'中的'sock.settimeout(None)'導致你的錯誤。 –