blind-except (BLE001)
Derived from the flake8-blind-except linter.
What it does
Checks for except
clauses that catch all exceptions. This includes
bare except
, except BaseException
and except Exception
.
Why is this bad?
Overly broad except
clauses can lead to unexpected behavior, such as
catching KeyboardInterrupt
or SystemExit
exceptions that prevent the
user from exiting the program.
Instead of catching all exceptions, catch only those that are expected to
be raised in the try
block.
Example
Use instead:
Exceptions that are re-raised will not be flagged, as they're expected to be caught elsewhere:
Exceptions that are logged via logging.exception()
or logging.error()
with exc_info
enabled will not be flagged, as this is a common pattern
for propagating exception traces: