如果未找到对象,则在 getter 方法中返回值

App*_*Pie 1 java exception

我想知道解决这个问题的最佳设计是什么。我有一个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;
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*lan 6

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

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

另外,如果没有找到剧集,这是一个错误,还是完全可以接受的事情发生?如果可以接受,您可能应该返回null。这就是有效的方法Map.get()