В Python пользовательские исключения создаются путём наследования от встроенного класса Exception (или более конкретного подкласса, например ValueError или RuntimeError). Это позволяет определить понятные, специфичные для твоей предметной области ошибки с дополнительным контекстом.
Чтобы создать пользовательское исключение с собственными атрибутами и сообщениями об ошибках, переопредели метод __init__ и вызови super().__init__() с описательным сообщением:
class InsufficientFundsError(Exception):
def __init__(self, balance, amount):
self.balance = balance
self.amount = amount
super().__init__(f"Cannot withdraw {amount}, balance is {balance}")
Exception или более конкретного встроенного исключения, чтобы сохранить правильную иерархию исключенийself.balance, self.amount), чтобы передавать структурированный контекст ошибки вызывающему кодуsuper().__init__(), чтобы задать сообщение об ошибке по умолчаниюsuper().__init__(), чтобы обеспечить совместимость со стандартной обработкой исключенийtry:
raise InsufficientFundsError(balance=50, amount=100)
except InsufficientFundsError as e:
print(e) # Cannot withdraw 100, balance is 50
print(e.balance) # 50
print(e.amount) # 100
Error (например, InsufficientFundsError)ValueError для некорректного входного значения)Пользовательские исключения в Python должны наследоваться непосредственно от класса Exception и не могут наследоваться от более специфичных встроенных исключений, таких как ValueError или RuntimeError.
Новый — ещё не проверен сообществом
Вы