New submission from Raymond Hettinger: It is a somewhat common pattern to write:
try: do_something() except SomeException: pass To search examples in the standard library (or any other code base) use: $ egrep -C2 "except( [A-Za-z]+)?:" *py | grep -C2 "pass" In the Python2.7 Lib directory alone, we find 213 examples. I suggest a context manager be added that can ignore specifie exceptions. Here's a possible implementation: class Ignore: ''' Context manager to ignore particular exceptions''' def __init__(self, *ignored_exceptions): self.ignored_exceptions = ignored_exceptions def __enter__(self): return self def __exit__(self, exctype, excinst, exctb): return exctype in self.ignored_exceptions The usage would be something like this: with Ignore(IndexError, KeyError): print(s[t]) Here's a real-world example taken from zipfile.py: def _check_zipfile(fp): try: if _EndRecData(fp): return True # file has correct magic number except IOError: pass return False With Ignore() context manager, the code cleans-up nicely: def _check_zipfile(fp): with Ignore(IOError): return bool(EndRecData(fp)) # file has correct magic number return False I think this would make a nice addition to contextlib. ---------- assignee: ncoghlan messages: 169337 nosy: ncoghlan, rhettinger priority: low severity: normal status: open title: Add context manager for the "try: ... except: pass" pattern type: enhancement versions: Python 3.4 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue15806> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com