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

时间:2013-06-24 17:47:14

标签: 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;
}

1 个答案:

答案 0 :(得分:4)

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

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

此外,如果没有找到一集,或者它是完全可以接受的事情,它是错误吗?如果可以接受,您应该返回null。这是Map.get()的工作方式。