Tôi nghĩ một yếu tố quan trọng là khách hàng dịch vụ của bạn là ai.
Nếu lớp dịch vụ của bạn chỉ là ranh giới kiến trúc giữa các lớp trong dự án của riêng bạn và máy khách dịch vụ nằm trong cùng một lĩnh vực tin cậy, thì bạn có thể thư giãn mọi thứ và để các trường hợp ngoại lệ không được kiểm tra bong bóng ra khỏi lớp điều khiển hoặc máy khách dịch vụ.
Tuy nhiên, đối với mã phải đối mặt công khai; dịch vụ được sử dụng bởi bên thứ ba hoặc khách hàng, tôi nghĩ sẽ tốt hơn nếu bao bọc mọi trường hợp ngoại lệ không được kiểm soát với ngoại lệ theo định hướng dịch vụ, chủ yếu cho các vấn đề bảo mật, thứ hai là khớp nối lỏng lẻo và trừu tượng sạch.
Một ngoại lệ của lớp dữ liệu không bao giờ nên, trực tiếp làm cho nó trở thành người dùng cuối của một ứng dụng web . Nó có khả năng chứa thông tin nội bộ về lược đồ của bạn, truy vấn của bạn, thông tin số dòng, tên biến hoặc tên hàm, v.v ... Ngoại lệ của người dùng cuối có thể được vệ sinh trong một cài đặt an toàn.
Một khách hàng dịch vụ bên ngoài không quan tâm đến chi tiết triển khai của bạn và dù sao cũng không thể xử lý các trường hợp ngoại lệ không được kiểm tra, vì chúng là các vấn đề về lỗi hoặc môi trường. Trong các ứng dụng bảo mật, lỗi cơ sở dữ liệu đơn giản là không đủ an toàn để lan truyền, OracleException - ORA-01234 - ...
có thể là bảng thứ 3 được chèn vào. Khách hàng nên được phép đối phó với bất kỳ trường hợp ngoại lệ được kiểm tra / dự kiến nào có thể xử lý và coi mọi thứ khác là báo cáo lỗi tiềm ẩn. Hợp đồng dịch vụ của bạn nên là một sự trừu tượng hóa nguyên tắc, nhất quán, giao dịch. Nếu nó không thể làm bất cứ điều gì về ngoại lệ, thì điều hữu ích duy nhất còn lại là cung cấp cho bạn một báo cáo lỗi. Bạn đã có khả năng đăng nhập ngoại lệ, vậy tại sao lại tạo gánh nặng cho người dùng cuối của bạn với các chi tiết? Ứng dụng của bạn có thể được theo dõi để bạn đã biết về các ngoại lệ không được kiểm tra trước khi người dùng báo cáo chúng.
Không bao giờ ổn khi ăn ngoại lệ, tôi cũng không phải là người thích kiểm tra ngoại lệ, nhưng tôi thích có một kế hoạch phù hợp với bản chất của sản phẩm tổng thể.