-
Notifications
You must be signed in to change notification settings - Fork 105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature request: a rule for calling super().__init__() in custom exception's __init__() #421
Labels
Comments
Should the example be: class CustomException(Exception):
def __init__(self, custom: int, arguments: str) -> None:
self.msg = f"Something specific happened with custom: {custom} and {arguments}" # <-- custom
super().__init__(self.msg) Seems a good check for me and a bug waiting to happen. Please explain why this is bad to do in the README. And as always, provide good tests with correct code and bad code please. |
Yes, right, thanks. I fixed the original post. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Above exception class has an issue, in my personal experience it's quite common. The implementer assumes, that they will use the
self.msg
parameter during exception handling. The issue araises when the exception gets anywhere else as its string representation is as follows:and when the exception is instantiated with keyword arguments, we lose the information about the arguments' values.
How to fix it? By calling
super().__init__()
in the constructor. That way the string representation of the custom exception will contain the error message.Specification proposal
If a class:
Exception
,__str__()
method,__init__()
method doesn't enforce any positional-only argument,super().__init__()
in its__init__()
methodThen:
The text was updated successfully, but these errors were encountered: