0

要件:

  1. セクションは、教師 1 人、教科 1 つ、スケジュール 1 つを選択して作成されます。

  2. システムは、すべてのビジネス ルールに従っていることを確認します。

    • システムは、ビジネス ルールが守られていないことを検出しました。

    • システムはユーザーに競合を通知します。

    • システムは新しいセクションを作成しません。

3. システムが新しいセクションを作成します。

私の問題は、セクション Section(Teacher t, Subject s, Schedule c) のコンストラクターを定義した場合、競合のエラー メッセージを返す方法がわからないことです。

コンストラクターに例外をスローさせるだけですか? はいの場合、キャッチされた例外から文字列を返す方法は? その例外を作成する方法は?

それとも、より優れたシンプルな実装がありますか?

4

3 に答える 3

4

コンストラクターの失敗の報告は、2 つのオプションに要約されます。

  1. あなたが提案するように例外をスローします。これは、失敗が頻繁に発生することが予想されず、本当に「例外的」である場合、合理的なアプローチです。
  2. 失敗がビジネス ロジックの通常の部分である場合は、Factory パターンを使用して、新しく作成されたオブジェクトと、発生したときに失敗の詳細な原​​因を示すことができる状態変数を含むラッパー オブジェクトを返すことをお勧めします。
于 2013-01-28T01:03:11.967 に答える
3

確かに例外をスローできます。

throw new Exception("Some required files are missing");

または、アプリで使用する新しい例外を作成します (同じように機能します)。

try / catch ステートメント内のメッセージを読みたい場合は、次のようにします。

try
{
  // ...
}
catch(Exception ex)
{
  System.out.println(ex.getMessage()); //this will get "Some required files are missing"
}

詳細については、次のリンクを参照してください: http://en.wikibooks.org/wiki/Java_Programming/Throwing_and_Catching_Exceptions Java で一般的な例外をスローする方法は? http://docs.oracle.com/javase/6/docs/api/java/lang/Throwable.html#getMessage()

于 2013-01-28T01:05:11.883 に答える
1

コンストラクターから値を返すことはできません。これを行う唯一の方法は、何らかの例外をスローすることです。既存の例外タイプ (該当するものがある場合) を使用するか、拡張して独自の例外タイプを作成できますException。例えば:

public class MyException extends Exception {

    public MyException(){
        super();
    }

    public MyException(String message){
        super(message);
    }
}

コンストラクターは、例外の新しいインスタンスをスローし、適切なメッセージを設定するだけです。クラス インスタンスを作成するコードは、例外をキャッチして処理します。を呼び出すと、その時点でメッセージを取得できますgetMessage()

于 2013-01-28T01:00:27.360 に答える