Silence errors the right way.
authorLukas Prokop <admin@lukas-prokop.at>
Wed, 19 Feb 2014 22:04:15 +0000 (23:04 +0100)
committerLukas Prokop <admin@lukas-prokop.at>
Wed, 19 Feb 2014 22:04:15 +0000 (23:04 +0100)
Catch exceptions per operation (for-loop) per value (iterator).

grml2usb

index 504b141..92c2cbf 100755 (executable)
--- a/grml2usb
+++ b/grml2usb
@@ -166,14 +166,17 @@ def cleanup():
     proc = subprocess.Popen(["sync"])
     proc.wait()
 
     proc = subprocess.Popen(["sync"])
     proc.wait()
 
-    try:
-        for device in MOUNTED:
+    for device in MOUNTED:
+        try:
             unmount(device, "")
             unmount(device, "")
-        for tmpfile in TMPFILES:
+        except RuntimeError:
+            logging.debug('RuntimeError while umount %s, ignoring' % device)
+    for tmpfile in TMPFILES:
+        try:
             os.unlink(tmpfile)
             os.unlink(tmpfile)
-    # ignore: RuntimeError: Set changed size during iteration
-    except RuntimeError:
-        logging.debug('caught exception RuntimeError, ignoring')
+        except RuntimeError:
+            msg = 'RuntimeError while removing temporary %s, ignoring'
+            logging.debug(msg % tmpfile)
 
 
 def register_tmpfile(path):
 
 
 def register_tmpfile(path):