error in except
Albert Hopkins
marduk at letterboxes.org
Mon Feb 4 19:58:01 EST 2013
On Mon, Feb 4, 2013, at 04:49 PM, Rodrick Brown wrote:
> For the life of me I cant figure out why this exception is being thrown.
> How could I use pdb to debug this?
>
> $ python udp_local2.py server
> File "udp_local2.py", line 36
> except:
> ^
> SyntaxError: invalid syntax
>
>
> #!/usr/bin/env python
>
> import random, socket, sys
> s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
>
> MAX = 65535
> PORT = 1060
>
> if 2 <= len(sys.argv) <= 3 and sys.argv[1] == 'server':
> interface = sys.argv[2] if len(sys.argv) > 2 else ''
> s.bind((interface, PORT))
> print 'Listening at', s.getsockname()
> while True:
> data, address = s.recvfrom(MAX)
> if random.randint(0, 1):
> print 'The client at', address, 'says:', repr(data)
> s.sendto('Your data was %d bytes' % len(data), address)
> else:
> print 'Pretending to drop packet from', address
>
> elif len(sys.argv) == 3 and sys.argv[1] == 'client':
> hostname = sys.argv[2]
> s.connect((hostname, PORT))
> print 'Client socket name is', s.getsockname()
> delay = 0.1
> while True:
> s.send('This is another message')
> print 'Waiting up to', delay, 'seconds for a reply'
> s.settimeout(delay)
> try:
> data = s.recv(MAX)
> except socket.timeout:
> delay *= 2
> if delay > 2.0:
> raise RuntimeError('I think the server is down')
> except:
> raise
> else:
> break
> print 'The server says', repr(data)
> else:
> print >> sys.stderr, 'usage: %d server [<interfae>]' %
> sys.argv[0]
> print >> sys.stderr, ' or: %d client <host>' % sys.argv[0]
> sys.exit(2)
> --
> http://mail.python.org/mailman/listinfo/python-list
Your "except" statement is on the same level as "if delay > 2.0"..
effectively:
if delay > 2.0
...
except:
which is not valid syntax. Excepts go with try: blocks, not if: blocks.
More information about the Python-list
mailing list