Open m-aciek opened 11 months ago
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.
Should the example be:
Yes, right, thanks. I fixed the original post.
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: