[Python-checkins] r53621 - peps/trunk/pep-0008.txt
andrew.kuchling
python-checkins at python.org
Thu Feb 1 22:10:22 CET 2007
Author: andrew.kuchling
Date: Thu Feb 1 22:09:28 2007
New Revision: 53621
Modified:
peps/trunk/pep-0008.txt
Log:
Mention bare except: clauses in PEP 8; see the python-dev archive around Dec. 22 2007 for a short discussion
Modified: peps/trunk/pep-0008.txt
==============================================================================
--- peps/trunk/pep-0008.txt (original)
+++ peps/trunk/pep-0008.txt Thu Feb 1 22:09:28 2007
@@ -663,6 +663,32 @@
continuation characters thanks to the containing parentheses. The older
form will be removed in Python 3000.
+ - When catching exceptions, mention specific exceptions
+ whenever possible instead of using a bare 'except:' clause.
+
+ For example, use:
+
+ try:
+ import platform_specific_module
+ except ImportError:
+ platform_specific_module = None
+
+ A bare 'except:' clause will catch SystemExit and KeyboardInterrupt
+ exceptions, making it harder to interrupt a program with Control-C,
+ and can disguise other problems. If you want to catch all
+ exceptions that signal program errors, use 'except StandardError:'.
+
+ A good rule of thumb is to limit use of bare 'except' clauses to two
+ cases:
+
+ 1) If the exception handler will be printing out or logging
+ the traceback; at least the user will be aware that an
+ error has occurred.
+
+ 2) If the code needs to do some cleanup work, but then lets
+ the exception propagate upwards with 'raise'.
+ 'try...finally' is a better way to handle this case.
+
- Use string methods instead of the string module.
String methods are always much faster and share the same API with
More information about the Python-checkins
mailing list