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 に答える