One more thing, apart from what Albert mentioned. Exceptions must be classes or instances. In effect you cannot just do 'raise'. 'raise' statement must be followed by a class or an instance.
On Tue, Feb 5, 2013 at 6:28 AM, Albert Hopkins <mar...@letterboxes.org>wrote: > > > 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. > -- > http://mail.python.org/mailman/listinfo/python-list >
-- http://mail.python.org/mailman/listinfo/python-list