Nó phụ thuộc nếu đầu vào trực tiếp từ người dùng thông qua một số UI hoặc nó là từ hệ thống.
Nhập thông qua một giao diện người dùng
Đó là một câu hỏi kinh nghiệm người dùng làm thế nào để xử lý đầu vào không hợp lệ. Tôi không biết về trường hợp cụ thể của bạn, nhưng nói chung có một vài lựa chọn:
- Thông báo cho người dùng về lỗi và yêu cầu người dùng sửa lỗi trước khi tiếp tục (Phổ biến nhất)
- Tự động chuyển đổi sang phạm vi hợp lệ (nếu có thể), nhưng cảnh báo người dùng về thay đổi và cho phép người dùng xác minh trước khi tiếp tục.
- Âm thầm chuyển sang phạm vi hợp lệ và tiến hành.
Sự lựa chọn phụ thuộc vào sự mong đợi của người dùng và mức độ quan trọng của dữ liệu. Ví dụ: Google tự động sửa lỗi chính tả trong các truy vấn, nhưng điều này có rủi ro thấp vì một thay đổi không có ích không phải là vấn đề và rất dễ sửa (và thậm chí sau đó nó được làm rõ trên trang kết quả rằng truy vấn đã được thay đổi). Mặt khác, nếu bạn đang nhập tọa độ cho một tên lửa hạt nhân, bạn có thể muốn xác thực đầu vào cứng nhắc hơn và không có sửa chữa im lặng cho dữ liệu không hợp lệ. Vì vậy, không có câu trả lời phổ quát.
Quan trọng nhất, bạn nên xem xét nếu sửa lỗi đầu vào thậm chí có lợi cho người dùng. Tại sao người dùng nhập dữ liệu không hợp lệ? Thật dễ dàng để xem làm thế nào một người nào đó có thể mắc lỗi chính tả, nhưng tại sao mọi người sẽ nhập kinh độ -185? Nếu người dùng thực sự có nghĩa là +175 thì có lẽ họ đã gõ +175. Tôi nghĩ rằng rất có thể một kinh độ không hợp lệ chỉ đơn giản là một lỗi đánh máy và người dùng có nghĩa là -85 hoặc một cái gì đó khác. Trong trường hợp này âm thầm chuyển đổi là xấu và không có ích . Cách tiếp cận thân thiện với người dùng nhất cho ứng dụng của bạn có lẽ là cảnh báo người dùng về giá trị không hợp lệ và yêu cầu người dùng tự sửa nó.
Nhập thông qua API
Nếu đầu vào là từ một hệ thống hoặc hệ thống con khác, không có câu hỏi. Bạn nên ném một ngoại lệ. Bạn không bao giờ nên im lặng chuyển đổi đầu vào không hợp lệ từ một hệ thống khác, vì nó có thể che giấu các lỗi ở nơi khác trong hệ thống. Nếu đầu vào bị "sửa" thì nó sẽ xảy ra trong lớp UI, chứ không phải sâu hơn vào hệ thống.