InvalidDataError
. В функциях валидации, при обнаружении некорректных данных, выбрасывайте (raise
) созданное исключение с информативным сообщением об ошибке. В вызывающем коде обрабатывайте эти исключения в блоках try...except
, чтобы gracefully обработать ошибки валидации и предоставить пользователю понятное сообщение.
Использование собственных исключений для валидации входных данных в Python позволяет создавать более читаемый, понятный и поддерживаемый код. Вместо использования общих исключений, таких как ValueError
или TypeError
, вы можете определить свои исключения, которые отражают конкретные ошибки, возникающие в вашем приложении. Это облегчает отладку и позволяет более точно обрабатывать различные типы ошибок.
Вот как это можно сделать:
Exception
или одного из его потомков (например, ValueError
). Называйте классы исключений так, чтобы они отражали суть ошибки.
raise
) одно из ваших пользовательских исключений.
try...except
для перехвата ваших пользовательских исключений и обработки их соответствующим образом. Это может включать в себя логирование ошибки, возвращение сообщения об ошибке пользователю или выполнение каких-либо других действий по восстановлению.
Пример:
class InvalidAgeError(ValueError):
"""Исключение, возникающее, если возраст не является положительным числом."""
pass
class NameTooShortError(ValueError):
"""Исключение, возникающее, если имя слишком короткое."""
pass
def create_user(name, age):
"""Создает объект пользователя, предварительно валидируя входные данные."""
if not isinstance(age, int) or age <= 0:
raise InvalidAgeError("Возраст должен быть положительным целым числом.")
if len(name) < 3:
raise NameTooShortError("Имя должно содержать не менее 3 символов.")
return {"name": name, "age": age}
try:
user = create_user("Jo", -5)
print(f"Пользователь: {user}")
except InvalidAgeError as e:
print(f"Ошибка возраста: {e}")
except NameTooShortError as e:
print(f"Ошибка имени: {e}")
except Exception as e: #Обработка других, непредвиденных исключений (хорошая практика)
print(f"Непредвиденная ошибка: {e}")
try:
user = create_user("John", 30)
print(f"Пользователь: {user}")
except InvalidAgeError as e:
print(f"Ошибка возраста: {e}")
except NameTooShortError as e:
print(f"Ошибка имени: {e}")
except Exception as e: #Обработка других, непредвиденных исключений (хорошая практика)
print(f"Непредвиденная ошибка: {e}")
В этом примере InvalidAgeError
и NameTooShortError
- это пользовательские исключения, которые используются для валидации возраста и имени. Использование собственных исключений делает код более читаемым и позволяет более точно обрабатывать различные типы ошибок, связанных с валидацией данных.
Преимущества использования пользовательских исключений:
Помните, что правильное использование исключений является важной частью разработки надежного и поддерживаемого программного обеспечения.