Những người có sử dụng để bắt, ghi nhật ký và báo cáo nhiều lỗi xác thực dữ liệu cùng một lúc bằng Python?Cách thành ngữ để thu thập và báo cáo nhiều ngoại lệ trong Python
Tôi đang xây dựng một ứng dụng bằng Python 3 trước tiên xác thực dữ liệu đầu vào và sau đó xử lý dữ liệu đó. Lỗi báo cáo trong bước đầu tiên là một phần của chức năng dự định của chương trình, vì vậy tôi không muốn trình xác thực của tôi từ bỏ ngoại lệ đầu tiên. Đặc biệt, dữ liệu là dạng bảng và tôi muốn có thể trả về - thay vì tăng - một ngoại lệ cho mỗi dòng của bảng không xác thực.
Một forum discussion from a couple of years ago chiêm ngắm nhiều giải pháp, bao gồm những điều sau đây, trong đó có vẻ sạch nhất với tôi:
errors = []
for item in data:
try:
process(item)
except ValidationError as e:
errors.append(e)
if errors:
raise MultipleValidationErrors(errors)
nơi lớp MultipleValidationErrors
sẽ có một __str__
phương pháp thích hợp để liệt kê thông tin hữu ích về tất cả các ValidationErrors
trong đó.
Những người khác khuyên bạn nên sử dụng mô-đun traceback
, nhưng vì các ngoại lệ tôi muốn bắt là lỗi xác thực dữ liệu thay vì lỗi chương trình, điều đó có vẻ không phù hợp. Tuy nhiên, việc có được mô-đun logging
có thể thích hợp.
Có thể [câu hỏi này] (http://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block) sẽ giúp – inspectorG4dget
@ inspectorG4dget: câu hỏi đó là về việc bắt nhiều loại ngoại lệ; điều này là về việc bắt nhiều phiên bản của cùng một loại ngoại lệ. –
Mã bạn liệt kê sẽ hoạt động, nếu mã bạn thực hiện những gì bạn muốn hoặc bạn có thể sử dụng mô-đun truy nguyên để cung cấp nhiều thông tin hơn, như bạn đề cập. Ngoài ra, bạn có thể lưu đối tượng ngoại lệ trong cấu trúc dữ liệu để sử dụng sau này hoặc làm nhiều việc khác. Tất cả phụ thuộc vào yêu cầu của bạn để đáp ứng các ngoại lệ là gì, điều này không rõ ràng từ câu hỏi của bạn. –