Tôi có một giao diệnGiao diện thực hiện ra mắt trường hợp ngoại lệ khác nhau
public interface DataDAO {
public void doSomething() throws Exception;
}
Cho phép nói rằng có hai hiện thực, một trong đó sử dụng cơ sở dữ liệu để lấy dữ liệu và một số khác có sử dụng một Webservice.
public class DataDAOJdbc implements DataDAO {
public void doSomething() throws Exception {
//Implement
}
}
public class DataDAOWebService implements DataDAO {
public void doSomething() throws Exception {
//Implement
}
}
Như bạn có thể thấy, vấn đề là ngoại lệ siêu phổ biến được khởi chạy. Khi cả hai triển khai cần phải nâng cao cùng một loại ngoại lệ.
Việc triển khai Jdbc thực sự chỉ tăng cho phép nói SQLException trong khi triển khai Webservice chỉ tăng IOException.
Câu hỏi là, làm thế nào tôi có thể làm cho giao diện thanh lịch hơn, vì vậy tôi nắm bắt được một ngoại lệ thích hợp?
Điều đầu tiên mà tôi mặc dù đã tạo ra ngoại lệ của riêng tôi, và tuyên bố nó trên cấp độ giao diện
public interface DataDAO {
public void doSomething() throws MyCoolException;
}
Và sau đó, tất nhiên thực hiện accordinly.
Câu hỏi là, điều này có hợp lý không? Tôi chưa bao giờ tạo ra ngoại lệ của riêng mình, vì vậy tôi không thực sự chắc chắn nếu điều này có ý nghĩa hay không. Ngoài ra, tôi nên tính đến điều gì khi tạo MyCoolException?
Cách lấy cảm hứng từ Spring và gói chúng trong RuntimeExceptions. –
@AjayGeorge, tôi muốn những ngoại lệ đó được xử lý bởi cấp cao hơn, do đó làm cho chúng RuntimExceptions không hợp lệ đối với tôi, sửa tôi nếu tôi sai :) –
Bạn cũng có thể phân lớp RuntimeExceptions và sau đó tạo [DataAccessException] (http : //static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/dao/DataAccessException.html) như vào mùa xuân. –