我想知道这个问题的最佳设计是什么。我有一个Season
对象,其中ArrayList<Episode>
包含一个季节中给定电视节目的每一集。现在让我们说我想为给定的电视节目搜索特定季节的第25集。以下设计是否合适(抛出异常)或者更好地创建处于错误状态的对象,返回该对象并让调用方法弄清楚什么是错误的?
public class Season {
public Episode GetEpisode(int ep_no) throws Exception {
for(Episode ep : episodes)
if(ep.GetEpisodeNumber() == ep_no) return ep;
throw(new Exception("Episode not found."));
}
private ArrayList<Episode> episodes;
}
答案 0 :(得分:4)
这取决于。首先,我不会抛光Exception
。我会创建一种新的异常类型。也许是EpisodeNotFoundException
。这样,它更具描述性。
其次,代码是否需要在发生时处理这种情况,或者不应失败的情况。如果需要程序员干预,则应该抛出一个扩展RuntimeException
的异常。抛出RuntimeException
的代码不需要由调用它的代码处理。
此外,如果没有找到一集,或者它是完全可以接受的事情,它是错误吗?如果可以接受,您应该返回null
。这是Map.get()
的工作方式。