Fix the `dirty_unzip` rule
diff --git a/thefuck/rules/dirty_untar.py b/thefuck/rules/dirty_untar.py
index efbf1e328..25d02a640 100644
--- a/thefuck/rules/dirty_untar.py
+++ b/thefuck/rules/dirty_untar.py
@@ -19,7 +19,6 @@ def _is_tar_extract(cmd):
 
 
 def _tar_file(cmd):
-
     for c in cmd:
         for ext in tar_extensions:
             if c.endswith(ext):
diff --git a/thefuck/rules/dirty_unzip.py b/thefuck/rules/dirty_unzip.py
index 3e45ea375..8423a5ae0 100644
--- a/thefuck/rules/dirty_unzip.py
+++ b/thefuck/rules/dirty_unzip.py
@@ -5,8 +5,11 @@
 
 
 def _is_bad_zip(file):
-    with zipfile.ZipFile(file, 'r') as archive:
-        return len(archive.namelist()) > 1
+    try:
+        with zipfile.ZipFile(file, 'r') as archive:
+            return len(archive.namelist()) > 1
+    except:
+        return False
 
 
 def _zip_file(command):
@@ -24,8 +27,14 @@ def _zip_file(command):
 
 @for_app('unzip')
 def match(command):
-    return ('-d' not in command.script
-            and _is_bad_zip(_zip_file(command)))
+    if '-d' in command.script:
+        return False
+
+    zip_file = _zip_file(command)
+    if zip_file:
+        return _is_bad_zip(zip_file)
+    else:
+        return False
 
 
 def get_new_command(command):
