Re: error in except

Discussion in 'Python' started by Laxmikant Chitare, Feb 5, 2013.

  1. 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 <>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
    >
     
    Laxmikant Chitare, Feb 5, 2013
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. John Salerno
    Replies:
    20
    Views:
    886
    John Salerno
    Aug 11, 2006
  2. Fabio Z Tessitore

    who is simpler? try/except/else or try/except

    Fabio Z Tessitore, Aug 12, 2007, in forum: Python
    Replies:
    5
    Views:
    399
  3. David House

    try -> except -> else -> except?

    David House, Jul 6, 2009, in forum: Python
    Replies:
    2
    Views:
    366
    Bruno Desthuilliers
    Jul 6, 2009
  4. Peng Yu
    Replies:
    1
    Views:
    566
    Steven D'Aprano
    Nov 18, 2009
  5. MRAB
    Replies:
    0
    Views:
    878
Loading...

Share This Page