return-in-try-except-finally (SIM107)
Added in v0.0.211 · Related issues · View source
Derived from the flake8-simplify linter.
What it does
Checks for return statements in try-except and finally blocks.
Why is this bad?
The return statement in a finally block will always be executed, even if
an exception is raised in the try or except block. This can lead to
unexpected behavior.
Example
def squared(n):
try:
sqr = n**2
return sqr
except Exception:
return "An exception occurred"
finally:
return -1 # Always returns -1.
Use instead:
def squared(n):
try:
return_value = n**2
except Exception:
return_value = "An exception occurred"
finally:
return_value = -1
return return_value