Что люди привыкли ловить, регистрировать и сообщать сразу несколько ошибок проверки данных в Python?
Я создаю приложение в Python 3, которое сначала проверяет входные данные, а затем обрабатывает их. Ошибки отчетности на первом этапе являются частью предполагаемой функциональности программы, поэтому я не хочу, чтобы мой валидатор отказался от первого исключения. В частности, данные являются табличными, и я хочу иметь возможность возвращать - а не повышать - исключение для каждой строки таблицы, которая не проверяется.
A обсуждение форума с двух лет назад рассматривает несколько решений, включая следующие, который кажется мне самым чистым:
errors = []
for item in data:
try:
process(item)
except ValidationError as e:
errors.append(e)
if errors:
raise MultipleValidationErrors(errors)
где класс MultipleValidationErrors
имел бы соответствующий метод __str__
для отображения полезной информации обо всех ValidationErrors
в нем.
Другие рекомендуют использовать модуль traceback
, но поскольку исключения, которые я хочу уловить, это ошибки проверки данных, а не ошибки программы, что кажется неуместным. При этом может потребоваться использование модуля logging
.