【发布时间】:2013-05-16 05:14:44
【问题描述】:
我有一个界面
public interface DataDAO {
public void doSomething() throws Exception;
}
假设有两种实现,一种使用数据库获取数据,另一种使用 Web 服务。
public class DataDAOJdbc implements DataDAO {
public void doSomething() throws Exception {
//Implement
}
}
public class DataDAOWebService implements DataDAO {
public void doSomething() throws Exception {
//Implement
}
}
正如您已经看到的,问题在于启动了超级通用异常。由于两种实现都需要引发相同类型的异常。
Jdbc 实现实际上只会引发 SQLException,而 Webservice 实现只会引发 IOException。
问题是,我怎样才能使界面更优雅,以便捕获适当的异常?
我首先想到的是创建自己的异常,并在接口级别声明它
public interface DataDAO {
public void doSomething() throws MyCoolException;
}
然后,当然相应地实施。
问题是,这有意义吗?我从未创建过自己的异常,所以我不确定这是否有意义。另外,创建 MyCoolException 时应该注意什么?
【问题讨论】:
-
如何从 Spring 中获取一些灵感并将它们包装在 RuntimeExceptions 中。
-
@AjayGeorge 好吧,我希望上层处理这些异常,因此将它们设为 RuntimExceptions 对我无效,如果我错了,请纠正我 :)
-
你可以继承 RuntimeExceptions 然后像在春天一样创建一个DataAccessException。
标签: java oop exception interface