Jelajahi Sumber

handle BaseExceptions properly

Nick Sweeting 4 tahun lalu
induk
melakukan
2e57df917e
2 mengubah file dengan 7 tambahan dan 2 penghapusan
  1. 3 1
      archivebox/config.py
  2. 4 1
      archivebox/logging_util.py

+ 3 - 1
archivebox/config.py

@@ -502,11 +502,13 @@ def write_config_file(config: Dict[str, str], out_dir: str=None) -> ConfigDict:
             key.upper(): CONFIG.get(key.upper())
             for key in config.keys()
         }
-    except BaseException:
+    except BaseException:                                                       # lgtm [py/catch-base-exception]
         # something went horribly wrong, rever to the previous version
         with open(f'{config_path}.bak', 'r', encoding='utf-8') as old:
             atomic_write(config_path, old.read())
 
+        raise
+
     if Path(f'{config_path}.bak').exists():
         os.remove(f'{config_path}.bak')
 

+ 4 - 1
archivebox/logging_util.py

@@ -157,7 +157,10 @@ class TimedProgress:
                 # kill the progress bar subprocess
                 try:
                     self.p.close()   # must be closed *before* its terminnated
-                except BaseException:
+                except (KeyboardInterrupt, SystemExit):
+                    print()
+                    raise
+                except BaseException:                                           # lgtm [py/catch-base-exception]
                     pass
                 self.p.terminate()
                 self.p.join()