diff --git a/lib/backend.py b/lib/backend.py
index 256953220acbaa03a5a104fbddfcd36dcb50a524..306780870ef024bc4fdb939684584c902060dc3a 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -884,7 +884,7 @@ def _GetVGInfo(vg_name):
         "vg_free": int(round(float(valarr[1]), 0)),
         "pv_count": int(valarr[2]),
         }
-    except ValueError, err:
+    except (TypeError, ValueError), err:
       logging.exception("Fail to parse vgs output: %s", err)
   else:
     logging.error("vgs output has the wrong number of fields (expected"
diff --git a/lib/bdev.py b/lib/bdev.py
index d9718a781d78301c6e0e0b8c1d111de5c01a8e5a..e900ad667b83e3d56f4c2cb064420aacaec12a62 100644
--- a/lib/bdev.py
+++ b/lib/bdev.py
@@ -512,7 +512,7 @@ class LogicalVolume(BlockDev):
     try:
       major = int(major)
       minor = int(minor)
-    except ValueError, err:
+    except (TypeError, ValueError), err:
       logging.error("lvs major/minor cannot be parsed: %s", str(err))
 
     try:
@@ -933,7 +933,7 @@ class BaseDRBD(BlockDev): # pylint: disable-msg=W0223
                   result.fail_reason, result.output)
     try:
       sectors = int(result.stdout)
-    except ValueError:
+    except (TypeError, ValueError):
       _ThrowError("Invalid output from blockdev: '%s'", result.stdout)
     bytes = sectors * 512
     if bytes < 128 * 1024 * 1024: # less than 128MiB
diff --git a/lib/cli.py b/lib/cli.py
index fba312ef55fbb6b9e001074de6005234a43ff673..d9c2dbb26ddafdf113b17e2ce84fa88f254ef511 100644
--- a/lib/cli.py
+++ b/lib/cli.py
@@ -1561,7 +1561,7 @@ def GenerateTable(headers, fields, separator, data,
       if unitfields.Matches(fields[idx]):
         try:
           val = int(val)
-        except ValueError:
+        except (TypeError, ValueError):
           pass
         else:
           val = row[idx] = utils.FormatUnit(val, units)
@@ -1642,7 +1642,7 @@ def ParseTimespec(value):
   if value[-1] not in suffix_map:
     try:
       value = int(value)
-    except ValueError:
+    except (TypeError, ValueError):
       raise errors.OpPrereqError("Invalid time specification '%s'" % value)
   else:
     multiplier = suffix_map[value[-1]]
@@ -1652,7 +1652,7 @@ def ParseTimespec(value):
                                  " suffix passed)")
     try:
       value = int(value) * multiplier
-    except ValueError:
+    except (TypeError, ValueError):
       raise errors.OpPrereqError("Invalid time specification '%s'" % value)
   return value
 
diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 4f8a8f296969a9d73d62248de11aeeb52ac08246..cd84de8053115f59035caa6efb55446e92246e42 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -2424,8 +2424,11 @@ class LURemoveNode(LogicalUnit):
       "NODE_NAME": self.op.node_name,
       }
     all_nodes = self.cfg.GetNodeList()
-    if self.op.node_name in all_nodes:
+    try:
       all_nodes.remove(self.op.node_name)
+    except ValueError:
+      logging.warning("Node %s which is about to be removed not found"
+                      " in the all nodes list", self.op.node_name)
     return env, all_nodes, all_nodes
 
   def CheckPrereq(self):
@@ -5814,7 +5817,7 @@ class LUCreateInstance(LogicalUnit):
         raise errors.OpPrereqError("Missing disk size", errors.ECODE_INVAL)
       try:
         size = int(size)
-      except ValueError:
+      except (TypeError, ValueError):
         raise errors.OpPrereqError("Invalid disk size '%s'" % size,
                                    errors.ECODE_INVAL)
       self.disks.append({"size": size, "mode": mode})
@@ -7477,7 +7480,7 @@ class LUSetInstanceParams(LogicalUnit):
                                      errors.ECODE_INVAL)
         try:
           size = int(size)
-        except ValueError, err:
+        except (TypeError, ValueError), err:
           raise errors.OpPrereqError("Invalid disk size parameter: %s" %
                                      str(err), errors.ECODE_INVAL)
         disk_dict['size'] = size
diff --git a/lib/http/__init__.py b/lib/http/__init__.py
index 6f0d95cedcccab840ff848492f749f5f648621cb..e004a635d4fd975a8a05da21fdd3a168410ad89e 100644
--- a/lib/http/__init__.py
+++ b/lib/http/__init__.py
@@ -1019,7 +1019,7 @@ class HttpMessageReader(object):
     if hdr_content_length:
       try:
         self.content_length = int(hdr_content_length)
-      except ValueError:
+      except (TypeError, ValueError):
         self.content_length = None
       if self.content_length is not None and self.content_length < 0:
         self.content_length = None
diff --git a/lib/http/client.py b/lib/http/client.py
index 5ca76a16375de8eb18a400b78b9cc94dffdeed8b..ba27d1a5c107471549734b09e372bb98ba0a4621 100644
--- a/lib/http/client.py
+++ b/lib/http/client.py
@@ -137,7 +137,7 @@ class _HttpServerToClientMessageReader(http.HttpMessageReader):
       status = int(status)
       if status < 100 or status > 999:
         status = -1
-    except ValueError:
+    except (TypeError, ValueError):
       status = -1
 
     if status == -1:
diff --git a/lib/hypervisor/hv_xen.py b/lib/hypervisor/hv_xen.py
index 2eb2cc5adea8d6c7c1e0e1959f39ecefb9616f1a..5b3c22bed51f2a102c4ff13be12b14d7858046f5 100644
--- a/lib/hypervisor/hv_xen.py
+++ b/lib/hypervisor/hv_xen.py
@@ -134,7 +134,7 @@ class XenHypervisor(hv_base.BaseHypervisor):
         data[2] = int(data[2])
         data[3] = int(data[3])
         data[5] = float(data[5])
-      except ValueError, err:
+      except (TypeError, ValueError), err:
         raise errors.HypervisorError("Can't parse output of xm list,"
                                      " line: %s, error: %s" % (line, err))
 
diff --git a/lib/objects.py b/lib/objects.py
index 314606d3a6210da7c049f4a6b795caf0c71df3df..83ed13314f6766201f5a3e3fd5066934d6e2c208 100644
--- a/lib/objects.py
+++ b/lib/objects.py
@@ -747,7 +747,7 @@ class Instance(TaggableObject):
     try:
       idx = int(idx)
       return self.disks[idx]
-    except ValueError, err:
+    except (TypeError, ValueError), err:
       raise errors.OpPrereqError("Invalid disk index: '%s'" % str(err),
                                  errors.ECODE_INVAL)
     except IndexError:
diff --git a/lib/utils.py b/lib/utils.py
index 6e3340a77bacfc9d8a5dabc22f68247bba955305..7f02e1ad537e3c12f9add305a8d6afe8608ec320 100644
--- a/lib/utils.py
+++ b/lib/utils.py
@@ -491,7 +491,7 @@ def ReadPidFile(pidfile):
 
   try:
     pid = int(raw_data)
-  except ValueError, err:
+  except (TypeError, ValueError), err:
     logging.info("Can't parse pid file contents", exc_info=True)
     return 0
 
diff --git a/scripts/gnt-instance b/scripts/gnt-instance
index dad92f09456c0230a4c0a35967f3e191fafd3f01..0c02b9e18f3169fd783e0777ebf61a43258ac9a5 100755
--- a/scripts/gnt-instance
+++ b/scripts/gnt-instance
@@ -441,7 +441,7 @@ def BatchCreate(opts, args):
     for elem in specs['disk_size']:
       try:
         size = utils.ParseUnit(elem)
-      except ValueError, err:
+      except (TypeError, ValueError), err:
         raise errors.OpPrereqError("Invalid disk size '%s' for"
                                    " instance %s: %s" %
                                    (elem, name, err), errors.ECODE_INVAL)
@@ -704,7 +704,7 @@ def GrowDisk(opts, args):
   disk = args[1]
   try:
     disk = int(disk)
-  except ValueError, err:
+  except (TypeError, ValueError), err:
     raise errors.OpPrereqError("Invalid disk index: %s" % str(err),
                                errors.ECODE_INVAL)
   amount = utils.ParseUnit(args[2])
@@ -784,7 +784,7 @@ def ReplaceDisks(opts, args):
   else:
     try:
       disks = [int(i) for i in opts.disks.split(",")]
-    except ValueError, err:
+    except (TypeError, ValueError), err:
       raise errors.OpPrereqError("Invalid disk index passed: %s" % str(err),
                                  errors.ECODE_INVAL)
   cnt = [opts.on_primary, opts.on_secondary, opts.auto,
@@ -1231,14 +1231,14 @@ def SetInstanceParams(opts, args):
     try:
       nic_op = int(nic_op)
       opts.nics[idx] = (nic_op, nic_dict)
-    except ValueError:
+    except (TypeError, ValueError):
       pass
 
   for idx, (disk_op, disk_dict) in enumerate(opts.disks):
     try:
       disk_op = int(disk_op)
       opts.disks[idx] = (disk_op, disk_dict)
-    except ValueError:
+    except (TypeError, ValueError):
       pass
     if disk_op == constants.DDM_ADD:
       if 'size' not in disk_dict: