diff --git a/Doc/library/csv.rst b/Doc/library/csv.rst
index 735a305..1fbc5f2 100644
--- a/Doc/library/csv.rst
+++ b/Doc/library/csv.rst
@@ -480,7 +480,7 @@
        try:
            for row in reader:
                print row
-       except csv.Error, e:
+       except csv.Error as e:
            sys.exit('file %s, line %d: %s' % (filename, reader.line_num, e))
 
 And while the module doesn't directly support parsing strings, it can easily be
diff --git a/Doc/library/getopt.rst b/Doc/library/getopt.rst
index b3ba614..b454814 100644
--- a/Doc/library/getopt.rst
+++ b/Doc/library/getopt.rst
@@ -126,7 +126,7 @@
    def main():
        try:
            opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="])
-       except getopt.GetoptError, err:
+       except getopt.GetoptError as err:
            # print help information and exit:
            print str(err) # will print something like "option -a not recognized"
            usage()
diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst
index a1e1696..e897483 100644
--- a/Doc/library/shutil.rst
+++ b/Doc/library/shutil.rst
@@ -219,18 +219,18 @@
                else:
                    copy2(srcname, dstname)
                # XXX What about devices, sockets etc.?
-           except (IOError, os.error), why:
+           except (IOError, os.error) as why:
                errors.append((srcname, dstname, str(why)))
            # catch the Error from the recursive copytree so that we can
            # continue with other files
-           except Error, err:
+           except Error as err:
                errors.extend(err.args[0])
        try:
            copystat(src, dst)
        except WindowsError:
            # can't copy file access times on Windows
            pass
-       except OSError, why:
+       except OSError as why:
            errors.extend((src, dst, str(why)))
        if errors:
            raise Error(errors)
diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst
index f6dc4f0..0e5dac0 100644
--- a/Doc/library/socket.rst
+++ b/Doc/library/socket.rst
@@ -920,13 +920,13 @@
        af, socktype, proto, canonname, sa = res
        try:
            s = socket.socket(af, socktype, proto)
-       except socket.error, msg:
+       except socket.error as msg:
            s = None
            continue
        try:
            s.bind(sa)
            s.listen(1)
-       except socket.error, msg:
+       except socket.error as msg:
            s.close()
            s = None
            continue
@@ -955,12 +955,12 @@
        af, socktype, proto, canonname, sa = res
        try:
            s = socket.socket(af, socktype, proto)
-       except socket.error, msg:
+       except socket.error as msg:
            s = None
            continue
        try:
            s.connect(sa)
-       except socket.error, msg:
+       except socket.error as msg:
            s.close()
            s = None
            continue
diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst
index 8782439..19b90a1 100644
--- a/Doc/library/ssl.rst
+++ b/Doc/library/ssl.rst
@@ -361,7 +361,7 @@
             try:
                 s.do_handshake()
                 break
-            except ssl.SSLError, err:
+            except ssl.SSLError as err:
                 if err.args[0] == ssl.SSL_ERROR_WANT_READ:
                     select.select([s], [], [])
                 elif err.args[0] == ssl.SSL_ERROR_WANT_WRITE:
diff --git a/Doc/library/xdrlib.rst b/Doc/library/xdrlib.rst
index e56650c..6f05306 100644
--- a/Doc/library/xdrlib.rst
+++ b/Doc/library/xdrlib.rst
@@ -274,6 +274,5 @@
    p = xdrlib.Packer()
    try:
        p.pack_double(8.01)
-   except xdrlib.ConversionError, instance:
+   except xdrlib.ConversionError as instance:
        print 'packing the double failed:', instance.msg
-
diff --git a/Doc/library/xmlrpclib.rst b/Doc/library/xmlrpclib.rst
index 64c67ad..f50f270 100644
--- a/Doc/library/xmlrpclib.rst
+++ b/Doc/library/xmlrpclib.rst
@@ -380,7 +380,7 @@
    proxy = xmlrpclib.ServerProxy("http://localhost:8000/")
    try:
        proxy.add(2, 5)
-   except xmlrpclib.Fault, err:
+   except xmlrpclib.Fault as err:
        print "A fault occurred"
        print "Fault code: %d" % err.faultCode
        print "Fault string: %s" % err.faultString
@@ -427,7 +427,7 @@
 
    try:
        proxy.some_method()
-   except xmlrpclib.ProtocolError, err:
+   except xmlrpclib.ProtocolError as err:
        print "A protocol error occurred"
        print "URL: %s" % err.url
        print "HTTP/HTTPS headers: %s" % err.headers
@@ -545,7 +545,7 @@
 
    try:
        print server.examples.getStateName(41)
-   except Error, v:
+   except Error as v:
        print "ERROR", v
 
 To access an XML-RPC server through a proxy, you need to define  a custom
