Why this exception catch doesn't work?? (python 3)

Discussion in 'Python' started by Dodo, Apr 20, 2010.

  1. Dodo

    Dodo Guest

    Hello,

    I don't understand why this won't execute


    import urllib.request as u
    import socket
    socket.setdefaulttimeout(10)

    l = "http://img144.imageshack.us/my.php?image=koumakandg8.jpg" #
    supposed to timeout
    try:
    h = u.urlretrieve(l)
    except u.URLError, e: # I tried u.e too, no effect.
    print(e)
    except:
    print("other error")

    The error :

    ....\Python>err.py
    File "...\err.py", line 8
    except u.URLError, e: # I tried u.e too, no effect.
    ^
    SyntaxError: invalid syntax


    Dorian
     
    Dodo, Apr 20, 2010
    #1
    1. Advertisements

  2. Dodo

    MRAB Guest

    In Python 3 it's:

    except u.URLError as e:

    This a because in Python 2 people sometimes write:

    except OSError, IOError:

    thinking that it will catch both OSError and IOError.
     
    MRAB, Apr 20, 2010
    #2
    1. Advertisements

  3. Dodo

    Dodo Guest

    Le 20/04/2010 13:06, MRAB a écrit :
    thanks =D
     
    Dodo, Apr 20, 2010
    #3
  4. except (OSError, IOError), e: # Python 2.x

    If you put them in a tuple, it will catch them, right?
     
    Andrej Mitrovic, Apr 20, 2010
    #4
  5. Dodo

    MRAB Guest

    In Python 2.x:

    except (OSError, IOError), e:

    In Python 3.x (and also Python 2.6):

    except (OSError, IOError) as e:
     
    MRAB, Apr 20, 2010
    #5
    1. Advertisements

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.