0

我想知道这个问题的最佳设计是什么。我有一个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;
}
4

1 回答 1

4

这取决于。首先,我不会扔裸的Exception. 我会创建一种新的异常类型。也许一个EpisodeNotFoundException. 这样描述性更强。

其次,代码是否需要在这种情况发生时处理,或者它是否不应该失败。如果它需要程序员干预,您应该抛出一个扩展异常RuntimeException。抛出RuntimeException的代码不需要由调用它的代码来处理。

另外,如果没有找到某个情节,这是一个错误,还是完全可以接受的事情?如果可以接受,您可能应该返回null。这就是工作方式Map.get()

于 2013-06-24T17:49:55.420 回答