error in except

Laxmikant Chitare laxmikant.general at gmail.com
Tue Feb 5 07:51:49 CET 2013


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 <marduk at 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20130205/c45eacd0/attachment.html>


More information about the Python-list mailing list