1

これは私のコードです

static void tryit() throws Exception
{
      System.out.println(10 / 0);
}

public static void main(String[] args) 
{
    try {
        tryit();

    } catch (Exception e) {
        System.out.println("Exception caught in main");
    }
}

ここでさまようのは、このコードの1行目でthrows Exception正確に何をしますか?
それを使用しなくても、同じ出力が得られました

出力: main でキャッチされた例外

どこで効果を発揮しますか?このコードで必要ですか?

4

4 に答える 4

2

コンパイラはそれがスローされることを認識していないthrows Exceptionため、この場合ArithmeticExceptionは必要ありません。したがって、強制的に処理する必要はありません。RuntimeException見る:

ここに画像の説明を入力

これを行う必要がある場合、ランタイム例外ではない例外があり、例外をスローする可能性のある行をtry-catch句で囲まない場合は、メソッドを と宣言する必要があります。throws ThatException

于 2014-03-19T06:34:16.410 に答える
0

ここでさまよっているのは、このコードの1行目で「例外をスローする」ことです。正確には何をしますか?

関数の呼び出し元に責任を与えました。このメソッドは例外をスローできます。[呼び出し元] はそれを処理する必要があります。

そして、あなたの場合、それRuntimeExceptionはそのメソッドからスローされるため、例外でメソッドを宣言する必要はありません。そのため、例外をスローする部分を削除しても機能します。

メソッドがチェック済みの例外をスローする場合、およびメソッド自体の内部でそれを処理しない場合は、メソッド シグネチャでその例外をスローすることを宣言する必要があります。

于 2014-03-19T06:34:29.783 に答える
0

「throws」はメソッドの署名で使用され、「この関数を呼び出す親メソッド/メソッド」に、この関数が例外をスローする可能性があり、「親」メソッド/呼び出し元がそれを処理する必要があることを通知します。はい、@maroun Maroun が言うように、「現在のケースでは、スローは不要です」

于 2014-03-19T06:35:09.017 に答える