Use else clauses in exception handlers
authorIra W. Snyder <devel@irasnyder.com>
Sun, 9 Nov 2008 20:02:50 +0000 (12:02 -0800)
committerIra W. Snyder <devel@irasnyder.com>
Sun, 9 Nov 2008 20:02:50 +0000 (12:02 -0800)
The else clause in an exception handler helps to define what should
happen during normal running, when an exception doesn't happen. Use them
to make the code clearer.

Signed-off-by: Ira W. Snyder <devel@irasnyder.com>
PAR2Set/Base.py
rarslave.py

index 599827e..5ef2665 100644 (file)
@@ -185,10 +185,11 @@ class Base(object):
             # Delete the file
             try:
                 os.remove(fullname)
-                print 'rm', fullname
-                logging.debug('Deleting: %s' % fullname)
             except OSError:
                 logging.error('Failed to delete: %s' % fullname)
+            else:
+                print 'rm', fullname
+                logging.debug('Deleting: %s' % fullname)
 
     ############################################################################
 
index edd34ce..1a7e4bc 100755 (executable)
@@ -252,13 +252,14 @@ def findUniqueSets(directory, files):
 
         try:
             c = PAR2Set.CompareSet(directory, f)
-
-            if c not in s:
-                s.append(c)
         except:
             # We just ignore any errors that happen, such as
             # parsing the PAR file
             pass
+        else:
+            # Ok, we got a valid set, add it to s
+            if c not in s:
+                s.append(c)
 
     return s
 
@@ -283,21 +284,22 @@ def runEachType(cs, options):
     for t in types:
         try:
             instance = t(cs, options)
-            detected = True
-            logging.debug('%s detected for %s' % (t.__name__, cs.parityFile))
         except TypeError:
             logging.debug('%s not detected for %s' % (t.__name__, cs.parityFile))
             continue
+        else:
+            detected = True
+            logging.debug('%s detected for %s' % (t.__name__, cs.parityFile))
 
         # We detected something, try to run it
         try:
             instance.run()
-            logging.info('Success: %s' % instance)
-
-            # Leave early, we're done
-            return
         except (OSError, CalledProcessError):
             logging.critical('Failure: %s' % instance)
+        else:
+            # Leave early, we're done
+            logging.info('Success: %s' % instance)
+            return
 
     # Check that at least one detection worked
     if not detected: