【发布时间】:2018-12-11 20:33:47
【问题描述】:
我们的服务正在调用从数据库中检索数据的 API。让我们这样定义它
public List
getData(int id) 抛出 FinderException
看这个API,我以为找不到数据的时候会抛出FinderException。所以,我的代码是:-
try{
List<RowData> list = getData(id);
} catch (FinderException e) {
throw new InternalException();
}
return list;
现在,我意识到当找不到数据时,API 不会抛出 FinderException。因此,我的客户的代码正在破坏。因为我们 API 的客户端期望在找不到数据时抛出 InternalException。现在,他们的代码
list.get(0)
正在崩溃。 现在,我正在考虑将代码更改为:-
try{
List<RowData> list = getData();
if(list.isEmpty()) throw new FinderException()
} catch (FinderException e) {
throw new InternalException();
}
return list;
这是在同一方法中抛出和捕获的好代码吗?如果不是,为什么。 如何改进我的设计?
【问题讨论】:
标签: java oop exception-handling coding-style