0

catch ステートメントに赤い下線が引かれていますが、何が問題なのかわかりません。「対応する try ステートメントの本文に決してスローされません」というエラーが何を意味するのでしょうか? 私にはすべてがうまく見えます。

public void validateTriangle(int sidea, int sideb, int sidec) throws InvalidValueException {
    try {
        if ((sidea + sideb > sidec) || (sideb + sidec > sidea) || (sidea + sidec > sideb)) {
            findArea(side1, side2, side3);
        }
    } catch (InvalidValueException excep) {
        message = excep.getMessage();
    }
}
4

6 に答える 6

6

「対応する try ステートメントの本体で決してスローされない」とは、まさにその意味を意味します。コードに をキャッチするように指示しましたが、ブロックInvalidValueException内のどのコードによってもスローされません。tryどうやらfindAreaその例外をスローしないようです (明らかに、インライン コードはスローしません)。

try/catchブロックは、ブロック内で発生する例外をキャッチtryして (対応するcatchブロックで) 処理するために使用されるためcatchtry. IDE (およびコンパイラ ツールの lint 機能だと思いjavaます) は、発生しないエラーをキャッチすることはおそらく論理エラーであることに基づいて、フラグを立てます。

于 2012-10-11T12:19:47.187 に答える
1

try ブロック内で実行されるコードは、InvalidValueException. それが彼があなたに言っていることです。

catch ブロックは不要です

于 2012-10-11T12:20:03.897 に答える
0

findArea明示的に確認してくださいthrows InvalidValueException

... findArea(...) throws InvalidValueException {
   ...
}
于 2012-10-11T12:21:57.857 に答える
0

メソッドとしてこの赤い行/コンパイル時エラーが発生しています

throws InvalidValueException

これは、メソッドがこの例外を処理せず、呼び出し元のメソッドに渡されることを意味します。したがって、この場合、catch ブロックは実行されません。

于 2012-10-11T12:21:22.873 に答える
0

意味This exception is never thrown from the try

だからあなたのtry-catch block

于 2012-10-11T12:24:11.557 に答える
-2

あなたのtry-catchオーバーライド あなたはthrows InvalidValueException あなたの を削除するtry-catchか、あなたの を削除する必要がありますthrows InvalidValueException

于 2012-10-11T12:20:01.667 に答える