Repeating an exception class in a single except
statement will not fail but it is not what the developer intended. Either the class is
not the one which should be caught, or this is dead code.
Having a subclass and a parent class in the same except
statement is also useless. It is enough to keep only the parent class.
This rule raises an issue when an exception class is duplicated in an except
statement, or when an exception class has a parent class
in the same except
statement.
Noncompliant Code Example
try:
raise NotImplementedError()
except (NotImplementedError, RuntimeError): # Noncompliant. NotImplementedError inherits from RuntimeError
print("Foo")
try:
raise NotImplementedError()
except (RuntimeError, RuntimeError): # Noncompliant.
print("Foo")
Compliant Solution
try:
raise NotImplementedError()
except RuntimeError:
print("Foo")
See