2

Game次のシグネチャを持つコンストラクターを持つクラスがあります。

public Game(String[] boardState) throws InvalidStringsInputException, WrongNumberOfMarksException

また、junit4 テストケースにはメソッドがあります。

public static Game newGameFromStringsSuccessful(String[] input) //it is the line 9
{
    try
    {
        return new Game(input);
    }
    catch (WrongNumberOfMarksException exception)
    {
        fail("Caught exception where it shouldn't be");
    }
    catch (InvalidStringsInputException exception)
    {
        fail("Caught exception where it shouldn't be");
    }
}

私はEclipseを使用していますが、エラーが表示されます: This method must return a result of type Game line 9 Java Problem

return null両方のブロックの最後に挿入するcatchと、エラーは消えますが、私の質問はそうではありません。

4

2 に答える 2

1

以下のジョンの答えは、コンパイラが不平を言っている理由を説明しています。ただし、これを回避する正しい方法は、try/catchテストを行わないことです。例外がコール スタックを伝搬し、テストから外れるようにするだけです。JUnit はそれをキャッチしてテストに失敗しますが、例外がスローされた場所のスタック トレース全体を提供します。

throwsまたは、句を伝播する必要がない場合は、例外を a でラップしてRuntimeExceptionからスローします。繰り返しますが、これによりスタック トレースが提供され、より適切な診断が可能になります。

于 2013-07-01T17:23:01.190 に答える