diff --git a/Lib/xml/dom/domreg.py b/Lib/xml/dom/domreg.py
index cfd8231..f653563 100644
--- a/Lib/xml/dom/domreg.py
+++ b/Lib/xml/dom/domreg.py
@@ -77,7 +77,7 @@
         if _good_enough(dom, features):
             return dom
 
-    raise ImportError,"no suitable DOM implementation found"
+    raise ImportError("no suitable DOM implementation found")
 
 def _parse_feature_string(s):
     features = []
@@ -87,7 +87,7 @@
     while i < length:
         feature = parts[i]
         if feature[0] in "0123456789":
-            raise ValueError, "bad feature name: %r" % (feature,)
+            raise ValueError("bad feature name: %r" % (feature,))
         i = i + 1
         version = None
         if i < length:
diff --git a/Lib/xml/dom/expatbuilder.py b/Lib/xml/dom/expatbuilder.py
index a2f8a33..fdb5598 100644
--- a/Lib/xml/dom/expatbuilder.py
+++ b/Lib/xml/dom/expatbuilder.py
@@ -476,8 +476,8 @@
             if val == FILTER_INTERRUPT:
                 raise ParseEscape
             if val not in _ALLOWED_FILTER_RETURNS:
-                raise ValueError, \
-                      "startContainer() returned illegal value: " + repr(val)
+                raise ValueError(
+                      "startContainer() returned illegal value: " + repr(val))
             return val
         else:
             return FILTER_ACCEPT
@@ -496,8 +496,8 @@
                 # node is handled by the caller
                 return FILTER_REJECT
             if val not in _ALLOWED_FILTER_RETURNS:
-                raise ValueError, \
-                      "acceptNode() returned illegal value: " + repr(val)
+                raise ValueError(
+                      "acceptNode() returned illegal value: " + repr(val))
             return val
         else:
             return FILTER_ACCEPT
diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py
index fb57d58..0386288 100644
--- a/Lib/xml/dom/minidom.py
+++ b/Lib/xml/dom/minidom.py
@@ -541,7 +541,7 @@
             node.value = value
         else:
             if not isinstance(value, Attr):
-                raise TypeError, "value must be a string or Attr object"
+                raise TypeError("value must be a string or Attr object")
             node = value
             self.setNamedItem(node)
 
@@ -1177,7 +1177,7 @@
         else:
             node = self.getNamedItem(name_or_tuple)
         if node is None:
-            raise KeyError, name_or_tuple
+            raise KeyError(name_or_tuple)
         return node
 
     def item(self, index):
@@ -1607,7 +1607,7 @@
 
     def createTextNode(self, data):
         if not isinstance(data, StringTypes):
-            raise TypeError, "node contents must be a string"
+            raise TypeError("node contents must be a string")
         t = Text()
         t.data = data
         t.ownerDocument = self
@@ -1615,7 +1615,7 @@
 
     def createCDATASection(self, data):
         if not isinstance(data, StringTypes):
-            raise TypeError, "node contents must be a string"
+            raise TypeError("node contents must be a string")
         c = CDATASection()
         c.data = data
         c.ownerDocument = self
diff --git a/Lib/xml/sax/xmlreader.py b/Lib/xml/sax/xmlreader.py
index 4503315..6264ee3 100644
--- a/Lib/xml/sax/xmlreader.py
+++ b/Lib/xml/sax/xmlreader.py
@@ -295,12 +295,12 @@
 
     def getNameByQName(self, name):
         if name not in self._attrs:
-            raise KeyError, name
+            raise KeyError(name)
         return name
 
     def getQNameByName(self, name):
         if name not in self._attrs:
-            raise KeyError, name
+            raise KeyError(name)
         return name
 
     def getNames(self):
@@ -350,14 +350,14 @@
             if qname == name:
                 return self._attrs[nsname]
 
-        raise KeyError, name
+        raise KeyError(name)
 
     def getNameByQName(self, name):
         for (nsname, qname) in self._qnames.items():
             if qname == name:
                 return nsname
 
-        raise KeyError, name
+        raise KeyError(name)
 
     def getQNameByName(self, name):
         return self._qnames[name]
