python - socket.settimeout quits program not using except clause -


i have below python code, no data received , program quits without running except clause print , return statements

any ideas on happening?

sock.settimeout(10) try:     pkt = sock.recv(255) except socket.error:     print "connection timed out!"     return 

the problem socket.timeout exception different exception socket.error. so, except socket.error: doesn't catch socket.timeout same reason except valueerror: doesn't catch keyerror.

(the documentation isn't obvious in 2.x. 1 of many things cleaned in python 3.3/pep 3151—see the nice new docs—but long you're sticking 2.x don't benefit that.)

the right solution handle right error:

sock.settimeout(10) try:     pkt = sock.recv(255) except socket.timeout:     print "connection timed out!"     return 

if want handle socket errors (like, say, failure recv call) same way:

sock.settimeout(10) try:     pkt = sock.recv(255) except (socket.timeout, socket.error) e:     print "connection timed out or erred out: {}!".format(e)     return 

notice added in as e , added output. way, if unexpected goes wrong, you'll know what went wrong, instead of having guess.

of course, may want handle 2 errors differently, well:

sock.settimeout(10) try:     pkt = sock.recv(255) except socket.timeout:     print "connection timed out!"     return except socket.error e:     print "connection erred out: {}!".format(e)     return 

Comments

Popular posts from this blog

python - mat is not a numerical tuple : openCV error -

c# - MSAA finds controls UI Automation doesn't -

wordpress - .htaccess: RewriteRule: bad flag delimiters -