Catching and re-throwing an exception without further actions is redundant and wasteful. Instead, it is recommended to re-throw custom exception type and/or log trace for debugging.
1def nested_noncompliant():
2 try:
3 try_something()
4 except KeyError as e:
5 try:
6 catch_and_try_something()
7 # Noncompliant: unnecessary `except` clause.
8 except ValueError:
9 raise
10 raise e
1def nested_compliant():
2 try:
3 try_something()
4 except KeyError as e:
5 try:
6 catch_and_try_something()
7 except ValueError:
8 # Compliant: operation in `except` clause.
9 rethrow_exception_something()
10 raise
11 raise e