Do not ignore Exception with a pass statement

This page is not yet available in Spanish. We are working on its translation.
If you have any questions or feedback about our current translation project, feel free to reach out to us!

Metadata

ID: python-best-practices/no-silent-exception

Language: Python

Severity: Error

Category: Best Practices

Description

Using the pass statement in an exception block ignores the exception. Exceptions should never be ignored. Instead, the user must add code to notify an exception occurred and attempt to handle it or recover from it.

The exception to this rule is the use of StopIteration or StopAsyncIteration when implementing a custom iterator (as those errors are used to acknowledge the end of a successful iteration).

Non-Compliant Code Examples

a = 2
b = 0
try:
  c = a / b
except Exception as e:
  pass  # should use a regular statement and not ignore the exception

Compliant Code Examples

a = 2
b = 0
try:
  c = a / b
except ZeroDivisionError as e:
  print(e)
  pass

try:
  do_iteration()
except StopIteration: # Handling the iterator's successful conclusion is OK
  pass

try:
  do_async_iteration()
except StopAsyncIteration: # Handling the iterator's successful conclusion is OK
  pass
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Seamless integrations. Try Datadog Code Analysis