我有以下代码:
try:
connSock = socket(AF_INET, SOCK_STREAM)
connSock.connect((tgtHost, tgtPort))
except:
pass
finally:
connSock.close()
皮查姆说:
在connSock.close()行上赋值之前可能会引用局部变量'connSock'
这怎么可能呢?
我想念什么吗?
更新:
如果您的操作系统用尽了描述符,socket()函数可能会引发异常
如果socket()
第二行的调用引发异常,则connSock
永远不会绑定。
套接字可以用作上下文管理器,利用它可以为您带来好处:
try:
with socket(AF_INET, SOCK_STREAM) as connSock:
connSock.connect((tgtHost, tgtPort))
except socket.error:
pass
with
仅在socket()
调用成功完成后,退出该块时才关闭套接字,而不必引用该套接字。
请注意,您应该很少使用毯子except: pass
。更好地捕获特定的异常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句