Use contextlib.suppress¶
Sourcery refactoring id: use-contextlib-suppress¶
Description¶
Use contextlib's
suppress method to silence a specific error, instead of passing in an
exception handler. This refactoring will add an import for contextlib if
needed.
Before¶
try:
travel_world(days=80)
except DistractionError:
pass
After¶
import contextlib
with contextlib.suppress(DistractionError):
travel_world(days=80)
Explanation¶
The context manager slightly shortens the code and significantly clarifies the author's intention to ignore the specific errors. The standard library feature was introduced following a discussion, where the consensus was that
A key benefit here is in the priming effect for readers... The with statement form makes it clear before you start reading the code that certain exceptions won't propagate.
Related Rules¶
- merge-except-handler to merge except handlers with the same content
- remove-redundant-exception to clean up the tuple of an except clause
- remove-redundant-except-handler to
remove unreachable
exceptblocks - do-not-use-bare-except to always specify which
errors an
exceptblock is handling