From e8936e4576111b19edb56a6e563c009eb6091dcb Mon Sep 17 00:00:00 2001
From: miigotu <miigotu@gmail.com>
Date: Fri, 11 Dec 2015 19:09:07 -0800
Subject: [PATCH] Convert all exceptions to 'as' syntax

---
 SickBeard.py                            |  8 +++----
 sickbeard/browser.py                    |  2 +-
 sickbeard/clients/generic.py            | 10 ++++-----
 sickbeard/db.py                         | 10 ++++-----
 sickbeard/event_queue.py                |  2 +-
 sickbeard/failed_history.py             |  4 ++--
 sickbeard/metadata/generic.py           | 16 ++++++-------
 sickbeard/metadata/kodi_12plus.py       |  4 ++--
 sickbeard/metadata/mede8er.py           |  8 +++----
 sickbeard/metadata/mediabrowser.py      |  4 ++--
 sickbeard/metadata/tivo.py              |  6 ++---
 sickbeard/metadata/wdtv.py              |  4 ++--
 sickbeard/name_parser/parser.py         |  2 +-
 sickbeard/notifiers/emby.py             |  4 ++--
 sickbeard/notifiers/freemobile.py       |  4 ++--
 sickbeard/notifiers/growl.py            |  4 ++--
 sickbeard/notifiers/kodi.py             |  8 +++----
 sickbeard/notifiers/libnotify.py        |  4 ++--
 sickbeard/notifiers/nmj.py              | 10 ++++-----
 sickbeard/notifiers/nmjv2.py            |  8 +++----
 sickbeard/notifiers/plex.py             |  6 ++---
 sickbeard/notifiers/pushover.py         |  2 +-
 sickbeard/notifiers/pytivo.py           |  4 ++--
 sickbeard/notifiers/synoindex.py        |  4 ++--
 sickbeard/notifiers/synologynotifier.py |  2 +-
 sickbeard/notifiers/tweet.py            |  4 ++--
 sickbeard/nzbget.py                     |  2 +-
 sickbeard/postProcessor.py              | 18 +++++++--------
 sickbeard/processTV.py                  | 14 ++++++------
 sickbeard/properFinder.py               |  4 ++--
 sickbeard/providers/bluetigers.py       |  2 +-
 sickbeard/providers/cpasbien.py         |  2 +-
 sickbeard/providers/fnt.py              |  2 +-
 sickbeard/providers/gftracker.py        |  2 +-
 sickbeard/providers/iptorrents.py       |  2 +-
 sickbeard/providers/morethantv.py       |  2 +-
 sickbeard/providers/pretome.py          |  2 +-
 sickbeard/providers/rsstorrent.py       |  6 ++---
 sickbeard/providers/scenetime.py        |  2 +-
 sickbeard/providers/tokyotoshokan.py    |  2 +-
 sickbeard/providers/torrentbytes.py     |  2 +-
 sickbeard/providers/torrentleech.py     |  2 +-
 sickbeard/sab.py                        | 14 ++++++------
 sickbeard/scene_numbering.py            |  2 +-
 sickbeard/scheduler.py                  |  2 +-
 sickbeard/search.py                     | 10 ++++-----
 sickbeard/showUpdater.py                |  2 +-
 sickbeard/show_queue.py                 | 30 ++++++++++++-------------
 sickbeard/tv.py                         | 14 ++++++------
 sickbeard/tvcache.py                    |  8 +++----
 sickbeard/versionChecker.py             |  8 +++----
 sickbeard/webapi.py                     |  4 ++--
 sickbeard/webserve.py                   | 16 ++++++-------
 53 files changed, 160 insertions(+), 160 deletions(-)

diff --git a/SickBeard.py b/SickBeard.py
index 41a03f743..a6662d489 100755
--- a/SickBeard.py
+++ b/SickBeard.py
@@ -390,7 +390,7 @@ class SickRage(object):
             pid = os.fork()  # @UndefinedVariable - only available in UNIX
             if pid != 0:
                 os._exit(0)
-        except OSError, e:
+        except OSError as e:
             sys.stderr.write(u"fork #1 failed: %d (%s)\n" % (e.errno, e.strerror))
             sys.exit(1)
 
@@ -408,7 +408,7 @@ class SickRage(object):
             pid = os.fork()  # @UndefinedVariable - only available in UNIX
             if pid != 0:
                 os._exit(0)
-        except OSError, e:
+        except OSError as e:
             sys.stderr.write(u"fork #2 failed: %d (%s)\n" % (e.errno, e.strerror))
             sys.exit(1)
 
@@ -419,7 +419,7 @@ class SickRage(object):
 
             try:
                 file(self.PIDFILE, 'w').write("%s\n" % pid)
-            except IOError, e:
+            except IOError as e:
                 logger.log_error_and_exit(
                     u"Unable to write PID file: " + self.PIDFILE + " Error: " + str(e.strerror) + " [" + str(
                         e.errno) + "]")
@@ -463,7 +463,7 @@ class SickRage(object):
                 curShow = TVShow(int(sqlShow["indexer"]), int(sqlShow["indexer_id"]))
                 curShow.nextEpisode()
                 sickbeard.showList.append(curShow)
-            except Exception, e:
+            except Exception as e:
                 logger.log(
                     u"There was an error creating the show in " + sqlShow["location"] + ": " + str(e).decode('utf-8'),
                     logger.ERROR)
diff --git a/sickbeard/browser.py b/sickbeard/browser.py
index 021adc81c..7cba8f792 100644
--- a/sickbeard/browser.py
+++ b/sickbeard/browser.py
@@ -106,7 +106,7 @@ def foldersAtPath(path, includeParent=False, includeFiles=False):
 
     try:
         fileList = getFileList(path, includeFiles)
-    except OSError, e:
+    except OSError as e:
         logger.log(u"Unable to open " + path + ": " + repr(e) + " / " + str(e), logger.WARNING)
         fileList = getFileList(parentPath, includeFiles)
 
diff --git a/sickbeard/clients/generic.py b/sickbeard/clients/generic.py
index ca74035d8..34a5d7ee0 100644
--- a/sickbeard/clients/generic.py
+++ b/sickbeard/clients/generic.py
@@ -45,19 +45,19 @@ class GenericClient(object):
         try:
             self.response = self.session.__getattribute__(method)(self.url, params=params, data=data, files=files,
                                                                   timeout=120, verify=False)
-        except requests.exceptions.ConnectionError, e:
+        except requests.exceptions.ConnectionError as e:
             logger.log(self.name + u': Unable to connect ' + str(e), logger.ERROR)
             return False
         except (requests.exceptions.MissingSchema, requests.exceptions.InvalidURL):
             logger.log(self.name + u': Invalid Host', logger.ERROR)
             return False
-        except requests.exceptions.HTTPError, e:
+        except requests.exceptions.HTTPError as e:
             logger.log(self.name + u': Invalid HTTP Request ' + str(e), logger.ERROR)
             return False
-        except requests.exceptions.Timeout, e:
+        except requests.exceptions.Timeout as e:
             logger.log(self.name + u': Connection Timeout ' + str(e), logger.WARNING)
             return False
-        except Exception, e:
+        except Exception as e:
             logger.log(self.name + u': Unknown exception raised when send torrent to ' + self.name + ': ' + str(e),
                        logger.ERROR)
             return False
@@ -208,7 +208,7 @@ class GenericClient(object):
             if result.priority != 0 and not self._set_torrent_priority(result):
                 logger.log(self.name + u': Unable to set priority for Torrent', logger.ERROR)
 
-        except Exception, e:
+        except Exception as e:
             logger.log(self.name + u': Failed Sending Torrent', logger.ERROR)
             logger.log(self.name + u': Exception raised when sending torrent: ' + str(result) + u'. Error: ' + str(e), logger.DEBUG)
             return r_code
diff --git a/sickbeard/db.py b/sickbeard/db.py
index 92d5e0818..ee4924fc3 100644
--- a/sickbeard/db.py
+++ b/sickbeard/db.py
@@ -151,7 +151,7 @@ class DBConnection(object):
 
                     # finished
                     break
-                except sqlite3.OperationalError, e:
+                except sqlite3.OperationalError as e:
                     sqlResult = []
                     if self.connection:
                         self.connection.rollback()
@@ -162,7 +162,7 @@ class DBConnection(object):
                     else:
                         logger.log(u"DB error: " + ex(e), logger.ERROR)
                         raise
-                except sqlite3.DatabaseError, e:
+                except sqlite3.DatabaseError as e:
                     sqlResult = []
                     if self.connection:
                         self.connection.rollback()
@@ -202,7 +202,7 @@ class DBConnection(object):
 
                     # get out of the connection attempt loop since we were successful
                     break
-                except sqlite3.OperationalError, e:
+                except sqlite3.OperationalError as e:
                     if "unable to open database file" in e.args[0] or "database is locked" in e.args[0]:
                         logger.log(u"DB error: " + ex(e), logger.WARNING)
                         attempt += 1
@@ -210,7 +210,7 @@ class DBConnection(object):
                     else:
                         logger.log(u"DB error: " + ex(e), logger.ERROR)
                         raise
-                except sqlite3.DatabaseError, e:
+                except sqlite3.DatabaseError as e:
                     logger.log(u"Fatal error executing query: " + ex(e), logger.ERROR)
                     raise
 
@@ -389,7 +389,7 @@ def _processUpgrade(connection, upgradeClass):
         logger.log(u"Database upgrade required: " + prettyName(upgradeClass.__name__), logger.DEBUG)
         try:
             instance.execute()
-        except sqlite3.DatabaseError, e:
+        except sqlite3.DatabaseError as e:
             # attemping to restore previous DB backup and perform upgrade
             try:
                 instance.execute()
diff --git a/sickbeard/event_queue.py b/sickbeard/event_queue.py
index a2a56e93c..8f60d3f4e 100644
--- a/sickbeard/event_queue.py
+++ b/sickbeard/event_queue.py
@@ -46,7 +46,7 @@ class Events(threading.Thread):
 
             # exiting thread
             self.stop.clear()
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Exception generated in thread " + self.name + ": " + ex(e), logger.ERROR)
             logger.log(repr(traceback.format_exc()), logger.DEBUG)
 
diff --git a/sickbeard/failed_history.py b/sickbeard/failed_history.py
index 47c53365e..f504558cd 100644
--- a/sickbeard/failed_history.py
+++ b/sickbeard/failed_history.py
@@ -137,7 +137,7 @@ def revertEpisode(epObj):
                 epObj.status = WANTED
                 epObj.saveToDB()
 
-    except EpisodeNotFoundException, e:
+    except EpisodeNotFoundException as e:
         logger.log(u"Unable to create episode, please set its status manually: " + ex(e),
                    logger.WARNING)
 
@@ -157,7 +157,7 @@ def markFailed(epObj):
             epObj.status = Quality.compositeStatus(FAILED, quality)
             epObj.saveToDB()
 
-    except EpisodeNotFoundException, e:
+    except EpisodeNotFoundException as e:
         logger.log(u"Unable to get episode, please set its status manually: " + ex(e), logger.WARNING)
 
     return log_str
diff --git a/sickbeard/metadata/generic.py b/sickbeard/metadata/generic.py
index c4d22bc05..b2e11566c 100644
--- a/sickbeard/metadata/generic.py
+++ b/sickbeard/metadata/generic.py
@@ -288,7 +288,7 @@ class GenericMetadata(object):
                 helpers.chmodAsParent(nfo_file_path)
 
                 return True
-            except IOError, e:
+            except IOError as e:
                 logger.log(
                     u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e),
                     logger.ERROR)
@@ -415,7 +415,7 @@ class GenericMetadata(object):
             data.write(nfo_file, encoding='UTF-8')
             nfo_file.close()
             helpers.chmodAsParent(nfo_file_path)
-        except IOError, e:
+        except IOError as e:
             logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e),
                        logger.ERROR)
             return False
@@ -459,7 +459,7 @@ class GenericMetadata(object):
             data.write(nfo_file, encoding='UTF-8')
             nfo_file.close()
             helpers.chmodAsParent(nfo_file_path)
-        except IOError, e:
+        except IOError as e:
             logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e),
                        logger.ERROR)
             return False
@@ -707,7 +707,7 @@ class GenericMetadata(object):
             outFile.write(image_data)
             outFile.close()
             helpers.chmodAsParent(image_path)
-        except IOError, e:
+        except IOError as e:
             logger.log(
                 u"Unable to write image to " + image_path + " - are you sure the show folder is writable? " + ex(e),
                 logger.ERROR)
@@ -743,7 +743,7 @@ class GenericMetadata(object):
 
             t = sickbeard.indexerApi(show_obj.indexer).indexer(**lINDEXER_API_PARMS)
             indexer_show_obj = t[show_obj.indexerid]
-        except (sickbeard.indexer_error, IOError), e:
+        except (sickbeard.indexer_error, IOError) as e:
             logger.log(u"Unable to look up show on " + sickbeard.indexerApi(
                 show_obj.indexer).name + ", not downloading images: " + ex(e), logger.WARNING)
             logger.log(u"Indexer " + sickbeard.indexerApi(show_obj.indexer).name + "maybe experiencing some problems. Try again later", logger.DEBUG)
@@ -813,7 +813,7 @@ class GenericMetadata(object):
 
             t = sickbeard.indexerApi(show_obj.indexer).indexer(**lINDEXER_API_PARMS)
             indexer_show_obj = t[show_obj.indexerid]
-        except (sickbeard.indexer_error, IOError), e:
+        except (sickbeard.indexer_error, IOError) as e:
             logger.log(u"Unable to look up show on " + sickbeard.indexerApi(
                 show_obj.indexer).name + ", not downloading images: " + ex(e), logger.WARNING)
             logger.log(u"Indexer " + sickbeard.indexerApi(show_obj.indexer).name + "maybe experiencing some problems. Try again later", logger.DEBUG)
@@ -867,7 +867,7 @@ class GenericMetadata(object):
 
             t = sickbeard.indexerApi(show_obj.indexer).indexer(**lINDEXER_API_PARMS)
             indexer_show_obj = t[show_obj.indexerid]
-        except (sickbeard.indexer_error, IOError), e:
+        except (sickbeard.indexer_error, IOError) as e:
             logger.log(u"Unable to look up show on " + sickbeard.indexerApi(
                 show_obj.indexer).name + ", not downloading images: " + ex(e), logger.WARNING)
             logger.log(u"Indexer " + sickbeard.indexerApi(show_obj.indexer).name + "maybe experiencing some problems. Try again later", logger.DEBUG)
@@ -946,7 +946,7 @@ class GenericMetadata(object):
                         logger.log(u"Invalid Indexer ID (" + str(indexer_id) + "), not using metadata file because it has TVRage info", logger.WARNING)
                         return empty_return
 
-        except Exception, e:
+        except Exception as e:
             logger.log(
                 u"There was an error parsing your existing metadata file: '" + metadata_path + "' error: " + ex(e),
                 logger.WARNING)
diff --git a/sickbeard/metadata/kodi_12plus.py b/sickbeard/metadata/kodi_12plus.py
index 2b1eda150..673c1faa6 100644
--- a/sickbeard/metadata/kodi_12plus.py
+++ b/sickbeard/metadata/kodi_12plus.py
@@ -256,9 +256,9 @@ class KODI_12PlusMetadata(generic.GenericMetadata):
         try:
             t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS)
             myShow = t[ep_obj.show.indexerid]
-        except sickbeard.indexer_shownotfound, e:
+        except sickbeard.indexer_shownotfound as e:
             raise ShowNotFoundException(e.message)
-        except sickbeard.indexer_error, e:
+        except sickbeard.indexer_error as e:
             logger.log(u"Unable to connect to " + sickbeard.indexerApi(
                 ep_obj.show.indexer).name + " while creating meta files - skipping - " + ex(e), logger.ERROR)
             return
diff --git a/sickbeard/metadata/mede8er.py b/sickbeard/metadata/mede8er.py
index f24e5f14c..2f924f982 100644
--- a/sickbeard/metadata/mede8er.py
+++ b/sickbeard/metadata/mede8er.py
@@ -231,9 +231,9 @@ class Mede8erMetadata(mediabrowser.MediaBrowserMetadata):
 
             t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS)
             myShow = t[ep_obj.show.indexerid]
-        except sickbeard.indexer_shownotfound, e:
+        except sickbeard.indexer_shownotfound as e:
             raise ShowNotFoundException(e.message)
-        except sickbeard.indexer_error, e:
+        except sickbeard.indexer_error as e:
             logger.log(u"Unable to connect to TVDB while creating meta files - skipping - " + ex(e), logger.ERROR)
             return False
 
@@ -384,7 +384,7 @@ class Mede8erMetadata(mediabrowser.MediaBrowserMetadata):
             data.write(nfo_file)
             nfo_file.close()
             helpers.chmodAsParent(nfo_file_path)
-        except IOError, e:
+        except IOError as e:
             logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e),
                        logger.ERROR)
             return False
@@ -429,7 +429,7 @@ class Mede8erMetadata(mediabrowser.MediaBrowserMetadata):
             data.write(nfo_file)
             nfo_file.close()
             helpers.chmodAsParent(nfo_file_path)
-        except IOError, e:
+        except IOError as e:
             logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e),
                        logger.ERROR)
             return False
diff --git a/sickbeard/metadata/mediabrowser.py b/sickbeard/metadata/mediabrowser.py
index a917a4b47..f053d00e5 100644
--- a/sickbeard/metadata/mediabrowser.py
+++ b/sickbeard/metadata/mediabrowser.py
@@ -424,9 +424,9 @@ class MediaBrowserMetadata(generic.GenericMetadata):
             t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS)
 
             myShow = t[ep_obj.show.indexerid]
-        except sickbeard.indexer_shownotfound, e:
+        except sickbeard.indexer_shownotfound as e:
             raise ShowNotFoundException(e.message)
-        except sickbeard.indexer_error, e:
+        except sickbeard.indexer_error as e:
             logger.log(u"Unable to connect to " + sickbeard.indexerApi(
                 ep_obj.show.indexer).name + " while creating meta files - skipping - " + ex(e), logger.ERROR)
             return False
diff --git a/sickbeard/metadata/tivo.py b/sickbeard/metadata/tivo.py
index 2d8051db3..0fe707901 100644
--- a/sickbeard/metadata/tivo.py
+++ b/sickbeard/metadata/tivo.py
@@ -183,9 +183,9 @@ class TIVOMetadata(generic.GenericMetadata):
 
             t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS)
             myShow = t[ep_obj.show.indexerid]
-        except sickbeard.indexer_shownotfound, e:
+        except sickbeard.indexer_shownotfound as e:
             raise ShowNotFoundException(str(e))
-        except sickbeard.indexer_error, e:
+        except sickbeard.indexer_error as e:
             logger.log(u"Unable to connect to " + sickbeard.indexerApi(
                 ep_obj.show.indexer).name + " while creating meta files - skipping - " + str(e), logger.ERROR)
             return False
@@ -327,7 +327,7 @@ class TIVOMetadata(generic.GenericMetadata):
 
             helpers.chmodAsParent(nfo_file_path)
 
-        except EnvironmentError, e:
+        except EnvironmentError as e:
             logger.log(u"Unable to write file to " + nfo_file_path + " - are you sure the folder is writable? " + ex(e),
                        logger.ERROR)
             return False
diff --git a/sickbeard/metadata/wdtv.py b/sickbeard/metadata/wdtv.py
index 34c9cb539..1fea81914 100644
--- a/sickbeard/metadata/wdtv.py
+++ b/sickbeard/metadata/wdtv.py
@@ -199,9 +199,9 @@ class WDTVMetadata(generic.GenericMetadata):
 
             t = sickbeard.indexerApi(ep_obj.show.indexer).indexer(**lINDEXER_API_PARMS)
             myShow = t[ep_obj.show.indexerid]
-        except sickbeard.indexer_shownotfound, e:
+        except sickbeard.indexer_shownotfound as e:
             raise ShowNotFoundException(e.message)
-        except sickbeard.indexer_error, e:
+        except sickbeard.indexer_error as e:
             logger.log(u"Unable to connect to " + sickbeard.indexerApi(
                 ep_obj.show.indexer).name + " while creating meta files - skipping - " + ex(e), logger.ERROR)
             return False
diff --git a/sickbeard/name_parser/parser.py b/sickbeard/name_parser/parser.py
index 5284c09d8..83f8becad 100644
--- a/sickbeard/name_parser/parser.py
+++ b/sickbeard/name_parser/parser.py
@@ -245,7 +245,7 @@ class NameParser(object):
                     except sickbeard.indexer_episodenotfound:
                         logger.log(u"Unable to find episode with date " + str(bestResult.air_date) + " for show " + bestResult.show.name + ", skipping", logger.WARNING)
                         episode_numbers = []
-                    except sickbeard.indexer_error, e:
+                    except sickbeard.indexer_error as e:
                         logger.log(u"Unable to contact " + sickbeard.indexerApi(bestResult.show.indexer).name + ": " + ex(e), logger.WARNING)
                         episode_numbers = []
 
diff --git a/sickbeard/notifiers/emby.py b/sickbeard/notifiers/emby.py
index f233ed75d..acfbcc300 100644
--- a/sickbeard/notifiers/emby.py
+++ b/sickbeard/notifiers/emby.py
@@ -63,7 +63,7 @@ class EMBYNotifier(object):
             logger.log(u'EMBY: HTTP response: ' + result.replace('\n', ''), logger.DEBUG)
             return True
 
-        except (urllib2.URLError, IOError), e:
+        except (urllib2.URLError, IOError) as e:
             logger.log(u'EMBY: Warning: Couldn\'t contact Emby at ' + url + ' ' + ex(e), logger.WARNING)
             return False
 
@@ -116,7 +116,7 @@ class EMBYNotifier(object):
                 logger.log(u'EMBY: HTTP response: ' + result.replace('\n', ''), logger.DEBUG)
                 return True
 
-            except (urllib2.URLError, IOError), e:
+            except (urllib2.URLError, IOError) as e:
                 logger.log(u'EMBY: Warning: Couldn\'t contact Emby at ' + url + ' ' + ex(e), logger.WARNING)
                 return False
 
diff --git a/sickbeard/notifiers/freemobile.py b/sickbeard/notifiers/freemobile.py
index bf9ac00b4..75c42df2e 100644
--- a/sickbeard/notifiers/freemobile.py
+++ b/sickbeard/notifiers/freemobile.py
@@ -57,7 +57,7 @@ class FreeMobileNotifier(object):
         # send the request to Free Mobile
         try:
             urllib2.urlopen(req)
-        except IOError, e:
+        except IOError as e:
             if hasattr(e, 'code'):
                 if e.code == 400:
                     message = "Missing parameter(s)."
@@ -75,7 +75,7 @@ class FreeMobileNotifier(object):
                     message = "Server error. Please retry in few moment."
                     logger.log(message, logger.ERROR)
                     return False, message
-        except Exception, e:
+        except Exception as e:
                 message = u"Error while sending SMS: {0}".format(e)
                 logger.log(message, logger.ERROR)
                 return False, message
diff --git a/sickbeard/notifiers/growl.py b/sickbeard/notifiers/growl.py
index aa86c8aa6..94742af06 100644
--- a/sickbeard/notifiers/growl.py
+++ b/sickbeard/notifiers/growl.py
@@ -148,7 +148,7 @@ class GrowlNotifier(object):
                         return self._send_growl(opts, message)
                     else:
                         return False
-            except Exception, e:
+            except Exception as e:
                 logger.log(u"GROWL: Unable to send growl to " + opts['host'] + ":" + str(opts['port']) + " - " + ex(e), logger.WARNING)
                 return False
 
@@ -191,7 +191,7 @@ class GrowlNotifier(object):
 
         try:
             return self._send(opts['host'], opts['port'], register.encode(), opts['debug'])
-        except Exception, e:
+        except Exception as e:
             logger.log(u"GROWL: Unable to send growl to " + opts['host'] + ":" + str(opts['port']) + " - " + ex(e), logger.WARNING)
             return False
 
diff --git a/sickbeard/notifiers/kodi.py b/sickbeard/notifiers/kodi.py
index 2e9f36b02..2e5bd4ede 100644
--- a/sickbeard/notifiers/kodi.py
+++ b/sickbeard/notifiers/kodi.py
@@ -306,7 +306,7 @@ class KODINotifier(object):
             encSqlXML = urllib.quote(sqlXML, ':\\/<>')
             try:
                 et = etree.fromstring(encSqlXML)
-            except SyntaxError, e:
+            except SyntaxError as e:
                 logger.log(u"Unable to parse XML returned from KODI: " + ex(e), logger.ERROR)
                 return False
 
@@ -386,7 +386,7 @@ class KODINotifier(object):
 
             try:
                 response = urllib2.urlopen(req)
-            except (httplib.BadStatusLine, urllib2.URLError), e:
+            except (httplib.BadStatusLine, urllib2.URLError) as e:
                 if sickbeard.KODI_ALWAYS_ON:
                     logger.log(u"Error while trying to retrieve KODI API version for " + host + ": " + ex(e), logger.WARNING)
                 return False
@@ -397,11 +397,11 @@ class KODINotifier(object):
                 response.close()
                 logger.log(u"KODI JSON response: " + str(result), logger.DEBUG)
                 return result  # need to return response for parsing
-            except ValueError, e:
+            except ValueError as e:
                 logger.log(u"Unable to decode JSON: " + str(response.read()), logger.WARNING)
                 return False
 
-        except IOError, e:
+        except IOError as e:
             if sickbeard.KODI_ALWAYS_ON:
                 logger.log(u"Warning: Couldn't contact KODI JSON API at " + ss(url) + " " + ex(e), logger.WARNING)
             return False
diff --git a/sickbeard/notifiers/libnotify.py b/sickbeard/notifiers/libnotify.py
index 40a6c1c69..16e5d5794 100644
--- a/sickbeard/notifiers/libnotify.py
+++ b/sickbeard/notifiers/libnotify.py
@@ -47,13 +47,13 @@ def diagnose():
     else:
         try:
             bus = dbus.SessionBus()
-        except dbus.DBusException, e:
+        except dbus.DBusException as e:
             return (u"<p>Error: unable to connect to D-Bus session bus: <code>%s</code>."
                     u"<p>Are you running SickRage in a desktop session?") % (cgi.escape(e),)
         try:
             bus.get_object('org.freedesktop.Notifications',
                            '/org/freedesktop/Notifications')
-        except dbus.DBusException, e:
+        except dbus.DBusException as e:
             return (u"<p>Error: there doesn't seem to be a notification daemon available: <code>%s</code> "
                     u"<p>Try installing notification-daemon or notify-osd.") % (cgi.escape(e),)
     return u"<p>Error: Unable to send notification."
diff --git a/sickbeard/notifiers/nmj.py b/sickbeard/notifiers/nmj.py
index 47e8309f1..c9ddbda4a 100644
--- a/sickbeard/notifiers/nmj.py
+++ b/sickbeard/notifiers/nmj.py
@@ -124,13 +124,13 @@ class NMJNotifier(object):
                 req = urllib2.Request(mount)
                 logger.log(u"Try to mount network drive via url: %s" % mount, logger.DEBUG)
                 handle = urllib2.urlopen(req)
-            except IOError, e:
+            except IOError as e:
                 if hasattr(e, 'reason'):
                     logger.log(u"NMJ: Could not contact Popcorn Hour on host %s: %s" % (host, e.reason), logger.WARNING)
                 elif hasattr(e, 'code'):
                     logger.log(u"NMJ: Problem with Popcorn Hour on host %s: %s" % (host, e.code), logger.WARNING)
                 return False
-            except Exception, e:
+            except Exception as e:
                 logger.log(u"NMJ: Unknown exception: " + ex(e), logger.ERROR)
                 return False
 
@@ -151,13 +151,13 @@ class NMJNotifier(object):
             logger.log(u"Sending NMJ scan update command via url: %s" % updateUrl, logger.DEBUG)
             handle = urllib2.urlopen(req)
             response = handle.read()
-        except IOError, e:
+        except IOError as e:
             if hasattr(e, 'reason'):
                 logger.log(u"NMJ: Could not contact Popcorn Hour on host %s: %s" % (host, e.reason), logger.WARNING)
             elif hasattr(e, 'code'):
                 logger.log(u"NMJ: Problem with Popcorn Hour on host %s: %s" % (host, e.code), logger.WARNING)
             return False
-        except Exception, e:
+        except Exception as e:
             logger.log(u"NMJ: Unknown exception: " + ex(e), logger.ERROR)
             return False
 
@@ -165,7 +165,7 @@ class NMJNotifier(object):
         try:
             et = etree.fromstring(response)
             result = et.findtext("returnValue")
-        except SyntaxError, e:
+        except SyntaxError as e:
             logger.log(u"Unable to parse XML returned from the Popcorn Hour: %s" % e, logger.ERROR)
             return False
 
diff --git a/sickbeard/notifiers/nmjv2.py b/sickbeard/notifiers/nmjv2.py
index 9a4d57fdd..5ac7bfc3b 100644
--- a/sickbeard/notifiers/nmjv2.py
+++ b/sickbeard/notifiers/nmjv2.py
@@ -93,7 +93,7 @@ class NMJv2Notifier(object):
                         sickbeard.NMJv2_DATABASE = DB_path
                         return True
 
-        except IOError, e:
+        except IOError as e:
             logger.log(u"Warning: Couldn't contact popcorn hour on host %s: %s" % (host, e), logger.WARNING)
             return False
         return False
@@ -122,19 +122,19 @@ class NMJv2Notifier(object):
             time.sleep(300.0 / 1000.0)
             handle2 = urllib2.urlopen(req)
             response2 = handle2.read()
-        except IOError, e:
+        except IOError as e:
             logger.log(u"Warning: Couldn't contact popcorn hour on host %s: %s" % (host, e), logger.WARNING)
             return False
         try:
             et = etree.fromstring(response1)
             result1 = et.findtext("returnValue")
-        except SyntaxError, e:
+        except SyntaxError as e:
             logger.log(u"Unable to parse XML returned from the Popcorn Hour: update_scandir, %s" % e, logger.ERROR)
             return False
         try:
             et = etree.fromstring(response2)
             result2 = et.findtext("returnValue")
-        except SyntaxError, e:
+        except SyntaxError as e:
             logger.log(u"Unable to parse XML returned from the Popcorn Hour: scanner_start, %s" % e, logger.ERROR)
             return False
 
diff --git a/sickbeard/notifiers/plex.py b/sickbeard/notifiers/plex.py
index e0e0987b1..0202013f2 100644
--- a/sickbeard/notifiers/plex.py
+++ b/sickbeard/notifiers/plex.py
@@ -89,7 +89,7 @@ class PLEXNotifier(object):
             # could return result response = re.compile('<html><li>(.+\w)</html>').findall(result)
             return 'OK'
 
-        except (urllib2.URLError, IOError), e:
+        except (urllib2.URLError, IOError) as e:
             logger.log(u'PLEX: Warning: Couldn\'t contact Plex at ' + url + ' ' + ex(e), logger.WARNING)
             return False
 
@@ -232,7 +232,7 @@ class PLEXNotifier(object):
                 try:
                     xml_tree = etree.parse(urllib.urlopen(url))
                     media_container = xml_tree.getroot()
-                except IOError, e:
+                except IOError as e:
                     logger.log(u'PLEX: Error while trying to contact Plex Media Server: ' + ex(e), logger.WARNING)
                     hosts_failed.append(cur_host)
                     continue
@@ -274,7 +274,7 @@ class PLEXNotifier(object):
                 try:
                     force and urllib.urlopen(url)
                     host_list.append(cur_host)
-                except Exception, e:
+                except Exception as e:
                     logger.log(u'PLEX: Error updating library section for Plex Media Server: ' + ex(e), logger.WARNING)
                     hosts_failed.append(cur_host)
 
diff --git a/sickbeard/notifiers/pushover.py b/sickbeard/notifiers/pushover.py
index 6c3e22a4e..064ac46f3 100644
--- a/sickbeard/notifiers/pushover.py
+++ b/sickbeard/notifiers/pushover.py
@@ -94,7 +94,7 @@ class PushoverNotifier(object):
             conn.request("POST", "/1/messages.json",
                          urllib.urlencode(args), {"Content-type": "application/x-www-form-urlencoded"})
 
-        except urllib2.HTTPError, e:
+        except urllib2.HTTPError as e:
             # if we get an error back that doesn't have an error code then who knows what's really happening
             if not hasattr(e, 'code'):
                 logger.log(u"Pushover notification failed." + ex(e), logger.ERROR)
diff --git a/sickbeard/notifiers/pytivo.py b/sickbeard/notifiers/pytivo.py
index c6fd68d61..1c28eccfc 100644
--- a/sickbeard/notifiers/pytivo.py
+++ b/sickbeard/notifiers/pytivo.py
@@ -94,14 +94,14 @@ class pyTivoNotifier(object):
 
         try:
             response = urlopen(request)  # @UnusedVariable
-        except HTTPError, e:
+        except HTTPError as e:
             if hasattr(e, 'reason'):
                 logger.log(u"pyTivo notification: Error, failed to reach a server - " + e.reason, logger.ERROR)
                 return False
             elif hasattr(e, 'code'):
                 logger.log(u"pyTivo notification: Error, the server couldn't fulfill the request - " + e.code, logger.ERROR)
             return False
-        except Exception, e:
+        except Exception as e:
             logger.log(u"PYTIVO: Unknown exception: " + ex(e), logger.ERROR)
             return False
         else:
diff --git a/sickbeard/notifiers/synoindex.py b/sickbeard/notifiers/synoindex.py
index 30c844feb..abdee673a 100644
--- a/sickbeard/notifiers/synoindex.py
+++ b/sickbeard/notifiers/synoindex.py
@@ -61,7 +61,7 @@ class synoIndexNotifier(object):
                                      cwd=sickbeard.PROG_DIR)
                 out, err = p.communicate()  # @UnusedVariable
                 logger.log(u"Script result: " + str(out), logger.DEBUG)
-            except OSError, e:
+            except OSError as e:
                 logger.log(u"Unable to run synoindex: " + ex(e), logger.ERROR)
 
     def deleteFolder(self, cur_path):
@@ -86,7 +86,7 @@ class synoIndexNotifier(object):
                                      cwd=sickbeard.PROG_DIR)
                 out, err = p.communicate()  # @UnusedVariable
                 logger.log(u"Script result: " + str(out), logger.DEBUG)
-            except OSError, e:
+            except OSError as e:
                 logger.log(u"Unable to run synoindex: " + ex(e), logger.ERROR)
 
 
diff --git a/sickbeard/notifiers/synologynotifier.py b/sickbeard/notifiers/synologynotifier.py
index cadac287d..bbdcfbb82 100644
--- a/sickbeard/notifiers/synologynotifier.py
+++ b/sickbeard/notifiers/synologynotifier.py
@@ -62,7 +62,7 @@ class synologyNotifier(object):
                                  cwd=sickbeard.PROG_DIR)
             out, err = p.communicate()  # @UnusedVariable
             logger.log(u"Script result: " + str(out), logger.DEBUG)
-        except OSError, e:
+        except OSError as e:
             logger.log(u"Unable to run synodsmnotify: " + ex(e))
 
 
diff --git a/sickbeard/notifiers/tweet.py b/sickbeard/notifiers/tweet.py
index 0f1147580..9005a6641 100644
--- a/sickbeard/notifiers/tweet.py
+++ b/sickbeard/notifiers/tweet.py
@@ -136,7 +136,7 @@ class TwitterNotifier(object):
 
         try:
             api.PostUpdate(message.encode('utf8')[:139])
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error Sending Tweet: " + ex(e), logger.ERROR)
             return False
 
@@ -156,7 +156,7 @@ class TwitterNotifier(object):
 
         try:
             api.PostDirectMessage(dmdest, message.encode('utf8')[:139])
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error Sending Tweet (DM): " + ex(e), logger.ERROR)
             return False
 
diff --git a/sickbeard/nzbget.py b/sickbeard/nzbget.py
index 2f14ad625..b8bc568eb 100644
--- a/sickbeard/nzbget.py
+++ b/sickbeard/nzbget.py
@@ -67,7 +67,7 @@ def sendNZB(nzb, proper=False):
             logger.WARNING)
         return False
 
-    except xmlrpclib.ProtocolError, e:
+    except xmlrpclib.ProtocolError as e:
         if e.errmsg == "Unauthorized":
             logger.log(u"NZBget username or password is incorrect.", logger.WARNING)
         else:
diff --git a/sickbeard/postProcessor.py b/sickbeard/postProcessor.py
index 470fdbc69..8b0343b1e 100644
--- a/sickbeard/postProcessor.py
+++ b/sickbeard/postProcessor.py
@@ -390,7 +390,7 @@ class PostProcessor(object):
             try:
                 helpers.moveFile(cur_file_path, new_file_path)
                 helpers.chmodAsParent(new_file_path)
-            except (IOError, OSError), e:
+            except (IOError, OSError) as e:
                 self._log("Unable to move file " + cur_file_path + " to " + new_file_path + ": " + ex(e), logger.ERROR)
                 raise
 
@@ -413,7 +413,7 @@ class PostProcessor(object):
             try:
                 helpers.copyFile(cur_file_path, new_file_path)
                 helpers.chmodAsParent(new_file_path)
-            except (IOError, OSError), e:
+            except (IOError, OSError) as e:
                 logger.log(u"Unable to copy file " + cur_file_path + " to " + new_file_path + ": " + ex(e), logger.ERROR)
                 raise
 
@@ -436,7 +436,7 @@ class PostProcessor(object):
             try:
                 helpers.hardlinkFile(cur_file_path, new_file_path)
                 helpers.chmodAsParent(new_file_path)
-            except (IOError, OSError), e:
+            except (IOError, OSError) as e:
                 self._log("Unable to link file " + cur_file_path + " to " + new_file_path + ": " + ex(e), logger.ERROR)
                 raise
 
@@ -458,7 +458,7 @@ class PostProcessor(object):
             try:
                 helpers.moveAndSymlinkFile(cur_file_path, new_file_path)
                 helpers.chmodAsParent(new_file_path)
-            except (IOError, OSError), e:
+            except (IOError, OSError) as e:
                 self._log("Unable to link file " + cur_file_path + " to " + new_file_path + ": " + ex(e), logger.ERROR)
                 raise
 
@@ -611,7 +611,7 @@ class PostProcessor(object):
             self._log(u"Adding the file to the anidb mylist", logger.DEBUG)
             try:
                 self.anidbEpisode.add_to_mylist(status=1)  # status = 1 sets the status of the file to "internal HDD"
-            except Exception, e:
+            except Exception as e:
                 self._log(u"exception msg: " + str(e))
 
     def _find_info(self):
@@ -649,7 +649,7 @@ class PostProcessor(object):
 
             try:
                 (cur_show, cur_season, cur_episodes, cur_quality, cur_version) = cur_attempt()
-            except (InvalidNameException, InvalidShowException), e:
+            except (InvalidNameException, InvalidShowException) as e:
                 logger.log(u"Unable to parse, skipping: " + ex(e), logger.DEBUG)
                 continue
 
@@ -739,7 +739,7 @@ class PostProcessor(object):
                 curEp = show.getEpisode(season, cur_episode)
                 if not curEp:
                     raise EpisodeNotFoundException()
-            except EpisodeNotFoundException, e:
+            except EpisodeNotFoundException as e:
                 self._log(u"Unable to create episode: " + ex(e), logger.DEBUG)
                 raise EpisodePostProcessingFailedException()
 
@@ -838,10 +838,10 @@ class PostProcessor(object):
                 out, _ = p.communicate()  # @UnusedVariable
                 self._log(u"Script result: " + str(out), logger.DEBUG)
 
-            except OSError, e:
+            except OSError as e:
                 self._log(u"Unable to run extra_script: " + ex(e))
 
-            except Exception, e:
+            except Exception as e:
                 self._log(u"Unable to run extra_script: " + ex(e))
 
     def _is_priority(self, ep_obj, new_ep_quality):
diff --git a/sickbeard/processTV.py b/sickbeard/processTV.py
index 7943e1b53..fd69dadf7 100644
--- a/sickbeard/processTV.py
+++ b/sickbeard/processTV.py
@@ -80,14 +80,14 @@ def delete_folder(folder, check_empty=True):
         try:
             logger.log(u"Deleting folder (if it's empty): " + folder)
             ek(os.rmdir, folder)
-        except (OSError, IOError), e:
+        except (OSError, IOError) as e:
             logger.log(u"Warning: unable to delete folder: " + folder + ": " + ex(e), logger.WARNING)
             return False
     else:
         try:
             logger.log(u"Deleting folder: " + folder)
             shutil.rmtree(folder)
-        except (OSError, IOError), e:
+        except (OSError, IOError) as e:
             logger.log(u"Warning: unable to delete folder: " + folder + ": " + ex(e), logger.WARNING)
             return False
 
@@ -126,11 +126,11 @@ def delete_files(processPath, notwantedFiles, result, force=False):
             result.output += logHelper(u"Changing ReadOnly Flag for file " + cur_file, logger.DEBUG)
             try:
                 ek(os.chmod, cur_file_path, stat.S_IWRITE)
-            except OSError, e:
+            except OSError as e:
                 result.output += logHelper(u"Cannot change permissions of " + cur_file_path + ': ' + ex(e), logger.DEBUG)
         try:
             ek(os.remove, cur_file_path)
-        except OSError, e:
+        except OSError as e:
             result.output += logHelper(u"Unable to delete file " + cur_file + ': ' + str(e.strerror), logger.DEBUG)
 
 
@@ -464,7 +464,7 @@ def unRAR(path, rarFiles, force, result):  # pylint: disable=too-many-branches,t
                 result.result = False
                 result.missedfiles.append(archive + " : Unpacking Failed with an Invalid Rar Archive Error")
                 continue
-            except Exception, e:
+            except Exception as e:
                 result.output += logHelper(u"Failed Unrar archive " + archive + ': ' + ex(e), logger.ERROR)
                 result.result = False
                 result.missedfiles.append(archive + " : Unpacking failed for an unknown reason")
@@ -553,7 +553,7 @@ def process_media(processPath, videoFiles, nzbName, process_method, force, is_pr
 
             result.result = processor.process()
             process_fail_message = ""
-        except EpisodePostProcessingFailedException, e:
+        except EpisodePostProcessingFailedException as e:
             result.result = False
             process_fail_message = ex(e)
 
@@ -607,7 +607,7 @@ def process_failed(dirName, nzbName, result):
             processor = failedProcessor.FailedProcessor(dirName, nzbName)
             result.result = processor.process()
             process_fail_message = ""
-        except FailedPostProcessingFailedException, e:
+        except FailedPostProcessingFailedException as e:
             result.result = False
             process_fail_message = ex(e)
 
diff --git a/sickbeard/properFinder.py b/sickbeard/properFinder.py
index 183608d34..44cec35c6 100644
--- a/sickbeard/properFinder.py
+++ b/sickbeard/properFinder.py
@@ -87,10 +87,10 @@ class ProperFinder:
 
             try:
                 curPropers = curProvider.find_propers(search_date)
-            except AuthException, e:
+            except AuthException as e:
                 logger.log(u"Authentication error: " + ex(e), logger.DEBUG)
                 continue
-            except Exception, e:
+            except Exception as e:
                 logger.log(u"Error while searching " + curProvider.name + ", skipping: " + ex(e), logger.DEBUG)
                 logger.log(traceback.format_exc(), logger.DEBUG)
                 continue
diff --git a/sickbeard/providers/bluetigers.py b/sickbeard/providers/bluetigers.py
index c3af540e1..d17bb8027 100644
--- a/sickbeard/providers/bluetigers.py
+++ b/sickbeard/providers/bluetigers.py
@@ -133,7 +133,7 @@ class BLUETIGERSProvider(TorrentProvider):
 
                                 items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/cpasbien.py b/sickbeard/providers/cpasbien.py
index c826b9411..3c1c1f91e 100644
--- a/sickbeard/providers/cpasbien.py
+++ b/sickbeard/providers/cpasbien.py
@@ -105,7 +105,7 @@ class CpasbienProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/fnt.py b/sickbeard/providers/fnt.py
index 95a78a1a8..29629b46b 100644
--- a/sickbeard/providers/fnt.py
+++ b/sickbeard/providers/fnt.py
@@ -143,7 +143,7 @@ class FNTProvider(TorrentProvider):
 
                                     items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/gftracker.py b/sickbeard/providers/gftracker.py
index c2fecc714..1a154a240 100644
--- a/sickbeard/providers/gftracker.py
+++ b/sickbeard/providers/gftracker.py
@@ -154,7 +154,7 @@ class GFTrackerProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/iptorrents.py b/sickbeard/providers/iptorrents.py
index 9043e86fa..8f1541ab5 100644
--- a/sickbeard/providers/iptorrents.py
+++ b/sickbeard/providers/iptorrents.py
@@ -144,7 +144,7 @@ class IPTorrentsProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Error: %r" % ex(e), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/morethantv.py b/sickbeard/providers/morethantv.py
index 13f885a5c..3163a0c0c 100644
--- a/sickbeard/providers/morethantv.py
+++ b/sickbeard/providers/morethantv.py
@@ -170,7 +170,7 @@ class MoreThanTVProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/pretome.py b/sickbeard/providers/pretome.py
index 87430198e..e37dbbed9 100644
--- a/sickbeard/providers/pretome.py
+++ b/sickbeard/providers/pretome.py
@@ -156,7 +156,7 @@ class PretomeProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/rsstorrent.py b/sickbeard/providers/rsstorrent.py
index bb3d72ed7..b53f5f2a5 100644
--- a/sickbeard/providers/rsstorrent.py
+++ b/sickbeard/providers/rsstorrent.py
@@ -122,13 +122,13 @@ class TorrentRssProvider(TorrentProvider):
                 torrent_file = self.get_url(url)
                 try:
                     bdecode(torrent_file)
-                except Exception, e:
+                except Exception as e:
                     self.dumpHTML(torrent_file)
                     return (False, 'Torrent link is not a valid torrent file: ' + ex(e))
 
             return (True, 'RSS feed Parsed correctly')
 
-        except Exception, e:
+        except Exception as e:
             return (False, 'Error when trying to load RSS: ' + ex(e))
 
     @staticmethod
@@ -140,7 +140,7 @@ class TorrentRssProvider(TorrentProvider):
             fileOut.write(data)
             fileOut.close()
             helpers.chmodAsParent(dumpName)
-        except IOError, e:
+        except IOError as e:
             logger.log(u"Unable to save the file: %s " % repr(e), logger.ERROR)
             return False
         logger.log(u"Saved custom_torrent html dump %s " % dumpName, logger.INFO)
diff --git a/sickbeard/providers/scenetime.py b/sickbeard/providers/scenetime.py
index c8d7fdd08..77e6673c2 100644
--- a/sickbeard/providers/scenetime.py
+++ b/sickbeard/providers/scenetime.py
@@ -139,7 +139,7 @@ class SceneTimeProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/tokyotoshokan.py b/sickbeard/providers/tokyotoshokan.py
index f2cac0fca..57227bc09 100644
--- a/sickbeard/providers/tokyotoshokan.py
+++ b/sickbeard/providers/tokyotoshokan.py
@@ -102,7 +102,7 @@ class TokyoToshokanProvider(TorrentProvider):
 
                         results.append(item)
 
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
         # FIXME SORTING
diff --git a/sickbeard/providers/torrentbytes.py b/sickbeard/providers/torrentbytes.py
index 7601a7b61..e9bf8d02d 100644
--- a/sickbeard/providers/torrentbytes.py
+++ b/sickbeard/providers/torrentbytes.py
@@ -155,7 +155,7 @@ class TorrentBytesProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/providers/torrentleech.py b/sickbeard/providers/torrentleech.py
index bf069c022..7602e3959 100644
--- a/sickbeard/providers/torrentleech.py
+++ b/sickbeard/providers/torrentleech.py
@@ -133,7 +133,7 @@ class TorrentLeechProvider(TorrentProvider):
 
                             items[mode].append(item)
 
-                except Exception, e:
+                except Exception as e:
                     logger.log(u"Failed parsing provider. Traceback: %s" % traceback.format_exc(), logger.ERROR)
 
             # For each search mode sort all the items by seeders if available
diff --git a/sickbeard/sab.py b/sickbeard/sab.py
index de8687383..cd64cd767 100644
--- a/sickbeard/sab.py
+++ b/sickbeard/sab.py
@@ -111,11 +111,11 @@ def sendNZB(nzb):
 
             f = opener.open(req)
 
-    except (EOFError, IOError), e:
+    except (EOFError, IOError) as e:
         logger.log(u"Unable to connect to SAB: " + ex(e), logger.ERROR)
         return False
 
-    except httplib.InvalidURL, e:
+    except httplib.InvalidURL as e:
         logger.log(u"Invalid SAB host, check your config: " + ex(e), logger.ERROR)
         return False
 
@@ -127,7 +127,7 @@ def sendNZB(nzb):
     # if we opened the URL connection then read the result from SAB
     try:
         result = f.readlines()
-    except Exception, e:
+    except Exception as e:
         logger.log(u"Error trying to get result from SAB, NZB not sent: " + ex(e), logger.ERROR)
         return False
 
@@ -162,7 +162,7 @@ def _checkSabResponse(f):
     """
     try:
         result = f.readlines()
-    except Exception, e:
+    except Exception as e:
         logger.log(u"Error trying to get result from SAB" + ex(e), logger.ERROR)
         return False, "Error from SAB"
 
@@ -174,7 +174,7 @@ def _checkSabResponse(f):
     sabJson = {}
     try:
         sabJson = json.loads(sabText)
-    except ValueError, e:
+    except ValueError as e:
         pass
 
     if sabText == "Missing authentication":
@@ -196,10 +196,10 @@ def _sabURLOpenSimple(url):
     """
     try:
         f = urllib.urlopen(url)
-    except (EOFError, IOError), e:
+    except (EOFError, IOError) as e:
         logger.log(u"Unable to connect to SAB: " + ex(e), logger.ERROR)
         return False, "Unable to connect"
-    except httplib.InvalidURL, e:
+    except httplib.InvalidURL as e:
         logger.log(u"Invalid SAB host, check your config: " + ex(e), logger.ERROR)
         return False, "Invalid SAB host"
     if f is None:
diff --git a/sickbeard/scene_numbering.py b/sickbeard/scene_numbering.py
index 23ba5f06c..8f73628fe 100644
--- a/sickbeard/scene_numbering.py
+++ b/sickbeard/scene_numbering.py
@@ -530,7 +530,7 @@ def xem_refresh(indexer_id, indexer, force=False):
                 myDB = db.DBConnection()
                 myDB.mass_action(cl)
 
-        except Exception, e:
+        except Exception as e:
             logger.log(
                 u"Exception while refreshing XEM data for show " + str(indexer_id) + " on " + sickbeard.indexerApi(
                     indexer).name + ": " + ex(e), logger.WARNING)
diff --git a/sickbeard/scheduler.py b/sickbeard/scheduler.py
index 627351ab6..a6907af2b 100644
--- a/sickbeard/scheduler.py
+++ b/sickbeard/scheduler.py
@@ -110,6 +110,6 @@ class Scheduler(threading.Thread):
                 time.sleep(1)
             # exiting thread
             self.stop.clear()
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Exception generated in thread " + self.name + ": " + ex(e), logger.ERROR)
             logger.log(repr(traceback.format_exc()), logger.DEBUG)
diff --git a/sickbeard/search.py b/sickbeard/search.py
index ab4411f83..5059cf112 100644
--- a/sickbeard/search.py
+++ b/sickbeard/search.py
@@ -75,7 +75,7 @@ def _downloadResult(result):
 
             helpers.chmodAsParent(fileName)
 
-        except EnvironmentError, e:
+        except EnvironmentError as e:
             logger.log(u"Error trying to save NZB to black hole: " + ex(e), logger.ERROR)
             newResult = False
     elif result.resultType == "torrent":
@@ -389,10 +389,10 @@ def searchForNeededEpisodes():
         curFoundResults = {}
         try:
             curFoundResults = curProvider.search_rss(episodes)
-        except AuthException, e:
+        except AuthException as e:
             logger.log(u"Authentication error: " + ex(e), logger.ERROR)
             continue
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error while searching " + curProvider.name + ", skipping: " + ex(e), logger.ERROR)
             logger.log(traceback.format_exc(), logger.DEBUG)
             continue
@@ -481,10 +481,10 @@ def searchProviders(show, episodes, manualSearch=False, downCurQuality=False):
 
             try:
                 searchResults = curProvider.find_search_results(show, episodes, search_mode, manualSearch, downCurQuality)
-            except AuthException, e:
+            except AuthException as e:
                 logger.log(u"Authentication error: " + ex(e), logger.ERROR)
                 break
-            except Exception, e:
+            except Exception as e:
                 logger.log(u"Error while searching " + curProvider.name + ", skipping: " + ex(e), logger.ERROR)
                 logger.log(traceback.format_exc(), logger.DEBUG)
                 break
diff --git a/sickbeard/showUpdater.py b/sickbeard/showUpdater.py
index b1bac12f5..17e725e17 100644
--- a/sickbeard/showUpdater.py
+++ b/sickbeard/showUpdater.py
@@ -116,7 +116,7 @@ class ShowUpdater:
                             u"Not updating episodes for show " + cur_show.name + " because it's last/next episode is not within the grace period.",
                             logger.DEBUG)
                         # pi_list.append(sickbeard.showQueueScheduler.action.refreshShow(cur_show, True))
-            except (CantUpdateShowException, CantRefreshShowException), e:
+            except (CantUpdateShowException, CantRefreshShowException) as e:
                 logger.log(u"Automatic update failed: " + ex(e), logger.ERROR)
 
         ui.ProgressIndicators.setIndicator('dailyUpdate', ui.QueueProgressIndicator("Daily Update", pi_list))
diff --git a/sickbeard/show_queue.py b/sickbeard/show_queue.py
index 457b6f8ed..af60180bc 100644
--- a/sickbeard/show_queue.py
+++ b/sickbeard/show_queue.py
@@ -309,7 +309,7 @@ class QueueItemAdd(ShowQueueItem):
                                            self.indexer).name) + " but contains no season/episode data.")
                 self._finishEarly()
                 return
-        except Exception, e:
+        except Exception as e:
             logger.log(u"%s Error while loading information from indexer %s. Error: %r" % (self.indexer_id, sickbeard.indexerApi(self.indexer).name, ex(e)), logger.ERROR)
             # logger.log(u"Show name with ID %s doesn't exist on %s anymore. If you are using trakt, it will be removed from your TRAKT watchlist. If you are adding manually, try removing the nfo and adding again" %
             #            (self.indexer_id, sickbeard.indexerApi(self.indexer).name), logger.WARNING)
@@ -379,7 +379,7 @@ class QueueItemAdd(ShowQueueItem):
             # if self.show.classification and "sports" in self.show.classification.lower():
             #     self.show.sports = 1
 
-        except sickbeard.indexer_exception, e:
+        except sickbeard.indexer_exception as e:
             logger.log(
                 u"Unable to add show due to an error with " + sickbeard.indexerApi(self.indexer).name + ": " + ex(e),
                 logger.ERROR)
@@ -399,7 +399,7 @@ class QueueItemAdd(ShowQueueItem):
             self._finishEarly()
             return
 
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error trying to add show: " + ex(e), logger.ERROR)
             logger.log(traceback.format_exc(), logger.DEBUG)
             self._finishEarly()
@@ -408,14 +408,14 @@ class QueueItemAdd(ShowQueueItem):
         logger.log(u"Retrieving show info from IMDb", logger.DEBUG)
         try:
             self.show.loadIMDbInfo()
-        except imdb_exceptions.IMDbError, e:
+        except imdb_exceptions.IMDbError as e:
             logger.log(u" Something wrong on IMDb api: " + ex(e), logger.WARNING)
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error loading IMDb info: " + ex(e), logger.ERROR)
 
         try:
             self.show.saveToDB()
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error saving the show to the database: " + ex(e), logger.ERROR)
             logger.log(traceback.format_exc(), logger.DEBUG)
             self._finishEarly()
@@ -426,7 +426,7 @@ class QueueItemAdd(ShowQueueItem):
 
         try:
             self.show.loadEpisodesFromIndexer()
-        except Exception, e:
+        except Exception as e:
             logger.log(
                 u"Error with " + sickbeard.indexerApi(self.show.indexer).name + ", not creating episode list: " + ex(e),
                 logger.ERROR)
@@ -437,7 +437,7 @@ class QueueItemAdd(ShowQueueItem):
 
         try:
             self.show.loadEpisodesFromDir()
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error searching dir for episodes: " + ex(e), logger.ERROR)
             logger.log(traceback.format_exc(), logger.DEBUG)
 
@@ -577,11 +577,11 @@ class QueueItemUpdate(ShowQueueItem):
         logger.log(u"Retrieving show info from " + sickbeard.indexerApi(self.show.indexer).name + "", logger.DEBUG)
         try:
             self.show.loadFromIndexer(cache=not self.force)
-        except sickbeard.indexer_error, e:
+        except sickbeard.indexer_error as e:
             logger.log(u"Unable to contact " + sickbeard.indexerApi(self.show.indexer).name + ", aborting: " + ex(e),
                        logger.WARNING)
             return
-        except sickbeard.indexer_attributenotfound, e:
+        except sickbeard.indexer_attributenotfound as e:
             logger.log(u"Data retrieved from " + sickbeard.indexerApi(
                 self.show.indexer).name + " was incomplete, aborting: " + ex(e), logger.ERROR)
             return
@@ -589,16 +589,16 @@ class QueueItemUpdate(ShowQueueItem):
         logger.log(u"Retrieving show info from IMDb", logger.DEBUG)
         try:
             self.show.loadIMDbInfo()
-        except imdb_exceptions.IMDbError, e:
+        except imdb_exceptions.IMDbError as e:
             logger.log(u" Something wrong on IMDb api: " + ex(e), logger.WARNING)
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error loading IMDb info: " + ex(e), logger.ERROR)
             logger.log(traceback.format_exc(), logger.DEBUG)
 
         # have to save show before reading episodes from db
         try:
             self.show.saveToDB()
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error saving show info to the database: " + ex(e), logger.ERROR)
             logger.log(traceback.format_exc(), logger.DEBUG)
 
@@ -610,7 +610,7 @@ class QueueItemUpdate(ShowQueueItem):
         logger.log(u"Loading all episodes from " + sickbeard.indexerApi(self.show.indexer).name + "", logger.DEBUG)
         try:
             IndexerEpList = self.show.loadEpisodesFromIndexer(cache=not self.force)
-        except sickbeard.indexer_exception, e:
+        except sickbeard.indexer_exception as e:
             logger.log(u"Unable to get info from " + sickbeard.indexerApi(
                 self.show.indexer).name + ", the show info will not be refreshed: " + ex(e), logger.ERROR)
             IndexerEpList = None
@@ -642,7 +642,7 @@ class QueueItemUpdate(ShowQueueItem):
         # save show again, in case episodes have changed
         try:
             self.show.saveToDB()
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error saving show info to the database: " + ex(e), logger.ERROR)
             logger.log(traceback.format_exc(), logger.DEBUG)
 
diff --git a/sickbeard/tv.py b/sickbeard/tv.py
index 4136255b8..bdaac1d46 100644
--- a/sickbeard/tv.py
+++ b/sickbeard/tv.py
@@ -419,7 +419,7 @@ class TVShow(object):
             logger.log(str(self.indexerid) + u": Creating episode from " + mediaFile, logger.DEBUG)
             try:
                 curEpisode = self.makeEpFromFile(ek(os.path.join, self._location, mediaFile))
-            except (ShowNotFoundException, EpisodeNotFoundException), e:
+            except (ShowNotFoundException, EpisodeNotFoundException) as e:
                 logger.log(u"Episode " + mediaFile + " returned an exception: " + ex(e), logger.ERROR)
                 continue
             except EpisodeDeletedException:
@@ -1012,7 +1012,7 @@ class TVShow(object):
                 else:
                     ek(os.remove, cache_file)
 
-            except OSError, e:
+            except OSError as e:
                 logger.log(u'Unable to %s %s: %s / %s' % (action, cache_file, repr(e), str(e)), logger.WARNING)
 
         # remove entire show folder
@@ -1040,7 +1040,7 @@ class TVShow(object):
 
             except ShowDirectoryNotFoundException:
                 logger.log(u"Show folder does not exist, no need to %s %s" % (action, self._location), logger.WARNING)
-            except OSError, e:
+            except OSError as e:
                 logger.log(u'Unable to %s %s: %s / %s' % (action, self._location, repr(e), str(e)), logger.WARNING)
 
         if sickbeard.USE_TRAKT and sickbeard.TRAKT_SYNC_WATCHLIST:
@@ -1621,7 +1621,7 @@ class TVEpisode(object):
             else:
                 myEp = cachedSeason[episode]
 
-        except (sickbeard.indexer_error, IOError), e:
+        except (sickbeard.indexer_error, IOError) as e:
             logger.log(u"" + sickbeard.indexerApi(self.indexer).name + " threw up an error: " + ex(e), logger.DEBUG)
             # if the episode is already valid just log it, if not throw it up
             if self.name:
@@ -1758,11 +1758,11 @@ class TVEpisode(object):
             if ek(os.path.isfile, nfoFile):
                 try:
                     showXML = etree.ElementTree(file=nfoFile)
-                except (SyntaxError, ValueError), e:
+                except (SyntaxError, ValueError) as e:
                     logger.log(u"Error loading the NFO, backing up the NFO and skipping for now: " + ex(e), logger.ERROR)
                     try:
                         ek(os.rename, nfoFile, nfoFile + ".old")
-                    except Exception, e:
+                    except Exception as e:
                         logger.log(
                             u"Failed to rename your episode's NFO file - you need to delete it or fix it: " + ex(e), logger.ERROR)
                     raise NoNFOException("Error in NFO format")
@@ -2093,7 +2093,7 @@ class TVEpisode(object):
             try:
                 np = NameParser(name, showObj=show, naming_pattern=True)
                 parse_result = np.parse(name)
-            except (InvalidNameException, InvalidShowException), e:
+            except (InvalidNameException, InvalidShowException) as e:
                 logger.log(u"Unable to get parse release_group: " + ex(e), logger.DEBUG)
                 return ''
 
diff --git a/sickbeard/tvcache.py b/sickbeard/tvcache.py
index f01d187a3..9ed63c1d1 100644
--- a/sickbeard/tvcache.py
+++ b/sickbeard/tvcache.py
@@ -59,7 +59,7 @@ class CacheDBConnection(db.DBConnection):
             if not self.hasColumn(providerName, 'version'):
                 self.addColumn(providerName, 'version', "NUMERIC", "-1")
 
-        except Exception, e:
+        except Exception as e:
             if str(e) != "table [" + providerName + "] already exists":
                 raise
 
@@ -67,7 +67,7 @@ class CacheDBConnection(db.DBConnection):
         try:
             if not self.hasTable('lastUpdate'):
                 self.action("CREATE TABLE lastUpdate (provider TEXT, time NUMERIC)")
-        except Exception, e:
+        except Exception as e:
             if str(e) != "table lastUpdate already exists":
                 raise
 
@@ -127,9 +127,9 @@ class TVCache(object):
                     myDB = self._getDB()
                     myDB.mass_action(cl)
 
-        except AuthException, e:
+        except AuthException as e:
             logger.log(u"Authentication error: " + ex(e), logger.ERROR)
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error while searching " + self.provider.name + ", skipping: " + repr(e), logger.DEBUG)
 
     def getRSSFeed(self, url):
diff --git a/sickbeard/versionChecker.py b/sickbeard/versionChecker.py
index 40ee5ffe0..79cb9949b 100644
--- a/sickbeard/versionChecker.py
+++ b/sickbeard/versionChecker.py
@@ -605,7 +605,7 @@ class GitUpdateManager(UpdateManager):
         else:
             try:
                 self._check_github_for_update()
-            except Exception, e:
+            except Exception as e:
                 logger.log(u"Unable to contact github, can't check for update: " + repr(e), logger.WARNING)
                 return False
 
@@ -728,7 +728,7 @@ class SourceUpdateManager(UpdateManager):
         # need this to run first to set self._newest_commit_hash
         try:
             self._check_github_for_update()
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Unable to contact github, can't check for update: " + repr(e), logger.WARNING)
             return False
 
@@ -869,7 +869,7 @@ class SourceUpdateManager(UpdateManager):
                             ek(os.chmod, new_path, stat.S_IWRITE)
                             ek(os.remove, new_path)
                             ek(os.renames, old_path, new_path)
-                        except Exception, e:
+                        except Exception as e:
                             logger.log(u"Unable to update " + new_path + ': ' + ex(e), logger.DEBUG)
                             ek(os.remove, old_path)  # Trash the updated file without moving in new path
                         continue
@@ -881,7 +881,7 @@ class SourceUpdateManager(UpdateManager):
             sickbeard.CUR_COMMIT_HASH = self._newest_commit_hash
             sickbeard.CUR_COMMIT_BRANCH = self.branch
 
-        except Exception, e:
+        except Exception as e:
             logger.log(u"Error while trying to update: " + ex(e), logger.ERROR)
             logger.log(u"Traceback: " + traceback.format_exc(), logger.DEBUG)
             return False
diff --git a/sickbeard/webapi.py b/sickbeard/webapi.py
index ce6ef6d16..29cf2c25d 100644
--- a/sickbeard/webapi.py
+++ b/sickbeard/webapi.py
@@ -134,7 +134,7 @@ class ApiHandler(RequestHandler):
 
         try:
             out_dict = _call_dispatcher(args, kwargs)
-        except Exception, e:  # real internal error oohhh nooo :(
+        except Exception as e:  # real internal error oohhh nooo :(
             logger.log(u"API :: " + ex(e), logger.ERROR)
             error_data = {
                 "error_msg": ex(e),
@@ -165,7 +165,7 @@ class ApiHandler(RequestHandler):
             callback = self.get_query_argument('callback', None) or self.get_query_argument('jsonp', None)
             if callback:
                 out = callback + '(' + out + ');'  # wrap with JSONP call if requested
-        except Exception, e:  # if we fail to generate the output fake an error
+        except Exception as e:  # if we fail to generate the output fake an error
             logger.log(u"API :: " + traceback.format_exc(), logger.DEBUG)
             out = '{"result": "%s", "message": "error while composing output: %s"}' % \
                   (result_type_map[RESULT_ERROR], ex(e))
diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py
index 8f6d76f65..82bd3dcca 100644
--- a/sickbeard/webserve.py
+++ b/sickbeard/webserve.py
@@ -1483,7 +1483,7 @@ class Home(WebRoot):
                 showObj.flatten_folders = flatten_folders
                 try:
                     sickbeard.showQueueScheduler.action.refreshShow(showObj)
-                except CantRefreshShowException, e:
+                except CantRefreshShowException as e:
                     errors.append("Unable to refresh this show: " + ex(e))
 
             showObj.paused = paused
@@ -1514,7 +1514,7 @@ class Home(WebRoot):
                         showObj.location = location
                         try:
                             sickbeard.showQueueScheduler.action.refreshShow(showObj)
-                        except CantRefreshShowException, e:
+                        except CantRefreshShowException as e:
                             errors.append("Unable to refresh this show:" + ex(e))
                             # grab updated info from TVDB
                             # showObj.loadEpisodesFromIndexer()
@@ -1538,14 +1538,14 @@ class Home(WebRoot):
             try:
                 sickbeard.scene_exceptions.update_scene_exceptions(showObj.indexerid, exceptions_list)  # @UndefinedVdexerid)
                 time.sleep(cpu_presets[sickbeard.CPU_PRESET])
-            except CantUpdateShowException, e:
+            except CantUpdateShowException as e:
                 errors.append("Unable to force an update on scene exceptions of the show.")
 
         if do_update_scene_numbering:
             try:
                 sickbeard.scene_numbering.xem_refresh(showObj.indexerid, showObj.indexer)
                 time.sleep(cpu_presets[sickbeard.CPU_PRESET])
-            except CantUpdateShowException, e:
+            except CantUpdateShowException as e:
                 errors.append("Unable to force an update on scene numbering of the show.")
 
         if directCall:
@@ -1616,7 +1616,7 @@ class Home(WebRoot):
         # force the update
         try:
             sickbeard.showQueueScheduler.action.updateShow(showObj, bool(force))
-        except CantUpdateShowException, e:
+        except CantUpdateShowException as e:
             ui.notifications.error("Unable to update this show.", ex(e))
 
         # just give it some time
@@ -3427,7 +3427,7 @@ class Manage(Home, WebRoot):
                 try:
                     sickbeard.showQueueScheduler.action.updateShow(showObj, True)
                     updates.append(showObj.name)
-                except CantUpdateShowException, e:
+                except CantUpdateShowException as e:
                     errors.append("Unable to update show: {0}".format(str(e)))
 
             # don't bother refreshing shows that were updated anyway
@@ -3435,7 +3435,7 @@ class Manage(Home, WebRoot):
                 try:
                     sickbeard.showQueueScheduler.action.refreshShow(showObj)
                     refreshes.append(showObj.name)
-                except CantRefreshShowException, e:
+                except CantRefreshShowException as e:
                     errors.append("Unable to refresh show " + showObj.name + ": " + ex(e))
 
             if curShowID in toRename:
@@ -4231,7 +4231,7 @@ class ConfigPostProcessing(Config):
                 return 'supported'
             logger.log(u'Rar Not Supported: Can not read the content of test file', logger.ERROR)
             return 'not supported'
-        except Exception, e:
+        except Exception as e:
             logger.log(u'Rar Not Supported: ' + ex(e), logger.ERROR)
             return 'not supported'
 
-- 
GitLab