Đó có phải là một thực tiễn tốt để thực hiện xử lý ngoại lệ vô dụng, chỉ trong trường hợp một phần khác của mã không được mã hóa chính xác?
Ví dụ cơ bản
Một điều đơn giản, vì vậy tôi không mất tất cả mọi người :).
Giả sử tôi đang viết một ứng dụng sẽ hiển thị thông tin của một người (tên, địa chỉ, v.v.), dữ liệu được trích xuất từ cơ sở dữ liệu. Giả sử tôi là người mã hóa phần UI và ai đó đang viết mã truy vấn DB.
Bây giờ hãy tưởng tượng rằng các thông số kỹ thuật của ứng dụng của bạn nói rằng nếu thông tin của người đó không đầy đủ (giả sử, tên bị thiếu trong cơ sở dữ liệu), người mã hóa truy vấn sẽ xử lý việc này bằng cách trả về "NA" cho trường bị thiếu.
Điều gì xảy ra nếu truy vấn được mã hóa kém và không xử lý trường hợp này? Điều gì sẽ xảy ra nếu anh chàng viết truy vấn xử lý cho bạn một kết quả không đầy đủ và khi bạn cố gắng hiển thị thông tin, mọi thứ sẽ gặp sự cố, vì mã của bạn không được chuẩn bị để hiển thị nội dung trống?
Ví dụ này rất cơ bản. Tôi tin rằng hầu hết các bạn sẽ nói "đó không phải là vấn đề của bạn, bạn không chịu trách nhiệm cho vụ tai nạn này". Nhưng, nó vẫn là một phần của mã bị lỗi.
Một vi dụ khac
Hãy nói bây giờ tôi là người viết truy vấn. Các thông số kỹ thuật không nói giống như trên, nhưng anh chàng viết truy vấn "chèn" phải đảm bảo tất cả các trường đã hoàn tất khi thêm một người vào cơ sở dữ liệu để tránh chèn thông tin không đầy đủ. Tôi có nên bảo vệ truy vấn "chọn" của mình để đảm bảo rằng tôi cung cấp cho anh chàng UI thông tin đầy đủ không?
Những câu hỏi
Điều gì xảy ra nếu các thông số kỹ thuật không nói rõ ràng "anh chàng này là người chịu trách nhiệm xử lý tình huống này"? Điều gì sẽ xảy ra nếu người thứ ba thực hiện một truy vấn khác (tương tự như truy vấn đầu tiên, nhưng trên DB khác) và sử dụng mã UI của bạn để hiển thị nó, nhưng không xử lý trường hợp này trong mã của anh ta?
Tôi có nên làm những gì cần thiết để ngăn chặn sự cố có thể xảy ra, ngay cả khi tôi không phải là người phải xử lý trường hợp xấu?
Tôi không tìm kiếm câu trả lời như "(anh ấy) là người chịu trách nhiệm cho vụ tai nạn", vì tôi không giải quyết xung đột ở đây, tôi muốn biết, liệu tôi có nên bảo vệ mã của mình trước các tình huống không phải là trách nhiệm của tôi giải quyết? Ở đây, một "nếu trống làm một cái gì đó" đơn giản sẽ đủ.
Nói chung, câu hỏi này giải quyết xử lý ngoại lệ dư thừa. Tôi đang hỏi nó bởi vì khi tôi làm việc một mình trong một dự án, tôi có thể mã hóa 2-3 lần một xử lý ngoại lệ tương tự trong các hàm liên tiếp, "chỉ trong trường hợp" tôi đã làm gì đó sai và để một trường hợp xấu xảy ra.