about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPhilipp Hagemeister <phihag@phihag.de>2015-02-10 01:13:57 +0100
committerPhilipp Hagemeister <phihag@phihag.de>2015-02-10 01:17:23 +0100
commit3a5bcd03263059bd7b905d4586c5f23f7f120974 (patch)
treec45dc06baada7eff584a12d24592e9febb2c1e43
parent99c2398bc641c478dbea85c013081d883479827e (diff)
downloadyoutube-dl-3a5bcd03263059bd7b905d4586c5f23f7f120974.tar.gz
youtube-dl-3a5bcd03263059bd7b905d4586c5f23f7f120974.tar.xz
youtube-dl-3a5bcd03263059bd7b905d4586c5f23f7f120974.zip
[extractor/common] Wrap extractor errors (Fixes #1194)
For now, we just wrap some common errors. More may follow. We do not want to catch actual programming errors in the extractors, such as 1 // 0.
-rw-r--r--youtube_dl/extractor/common.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py
index 2f5ba7aee..eee936a6f 100644
--- a/youtube_dl/extractor/common.py
+++ b/youtube_dl/extractor/common.py
@@ -264,8 +264,15 @@ class InfoExtractor(object):
 
     def extract(self, url):
         """Extracts URL information and returns it in list of dicts."""
-        self.initialize()
-        return self._real_extract(url)
+        try:
+            self.initialize()
+            return self._real_extract(url)
+        except ExtractorError:
+            raise
+        except compat_http_client.IncompleteRead as e:
+            raise ExtractorError('A network error has occured.', cause=e, expected=True)
+        except (KeyError,) as e:
+            raise ExtractorError('An extractor error has occured.', cause=e)
 
     def set_downloader(self, downloader):
         """Sets the downloader for this IE."""