Số mặt hàng 6 trong this bài viết tiểu bang:Vứt bỏ cùng một ngoại lệ nếu nó không được xử lý, hoặc xây dựng một ngoại lệ mới?
Cố gắng không ném lại ngoại lệ vì giá. Nếu cần việc ném lại đã là phải, hãy ném lại cùng một ngoại lệ thay vì tạo ngoại lệ mới. Điều này sẽ mang lại hiệu suất bổ sung. Bạn có thể thêm thông tin bổ sung trong mỗi lớp vào ngoại lệ đó.
Vâng, nhưng điều này vi phạm việc tách lớp, phải không?
Hãy nói rằng tôi có một thực hiện cụ thể của DAO mà ném một SQLException
Hãy nói rằng dịch vụ lớp của tôi (hoặc kinh doanh lớp ..) gọi một phương pháp từ DAO lớp, nhưng quyết định không xử lý các ngoại lệ ném.
Nếu tôi ném lại SQLException vào Lớp xem, Lớp xem của tôi sẽ không chỉ được ghép nối với Lớp DAO, phải không?
Không đúng để ném Ngoại lệ mới, để Chế độ xem phụ thuộc chỉ ở cấp độ một lớp bên dưới chứ không phải là hai?
Những lợi thế nào khi ném cùng ngoại lệ mang lại, ngoại trừ hiệu suất?
Phụ thuộc vào cách bạn nắm bắt. Nếu bạn chỉ cần bắt Throwable ở lớp trên cùng và in một dấu vết ngăn xếp và tin nhắn sau đó bạn không vi phạm bất cứ điều gì (cấp trên của bạn chỉ phụ thuộc vào Throwable). Nếu bạn bắt được DAO ngoại lệ cụ thể thì có điều gì đó đang xảy ra. – Pace
Vâng, đó là lời khuyên ngớ ngẩn. Nếu bạn cần phải suy nghĩ lại, hãy ném cái gì đó có ý nghĩa về mặt ngữ nghĩa cho cấp độ api đó, bạn hãy nghe nó có vẻ hoàn toàn hợp lý – pvg
Tôi không thể tưởng tượng được hiệu suất của việc tạo và ném một ngoại lệ mới thay vì một ngoại lệ theo bất kỳ cách thực tế nào. – Kylar