2

以下のような簡単なコードを作成しましょう

public class Sandbox {

    public static void run(String[] args) {
        int i = Integer.MAX_VALUE;
        int j = i+1;
        System.out.println(i);
        System.out.println(j);
    }
}

これは出力を出力します

2147483647

-2147483648

jの値は、コードが実行されたときに通知なしにオーバーローされます。

NetbeansIDEを使用してこのコードを実行します。

このような算術オーバーフローが発生したときに通知するようにシステムを構成することは可能ですか?

4

2 に答える 2

4

Java言語仕様の最後の文を参照してください(第15.18.2章数値型の加法演算子(+および-)):

オーバーフロー、アンダーフロー、または情報の損失が発生する可能性があるという事実にもかかわらず、数値加法演算子の評価が実行時例外をスローすることはありません。

この問題に関する長い記事と回避策のツールの説明については、Javaでの整数オーバーフローのシグナリングの記事を参照してください。

于 2012-10-14T07:48:13.647 に答える
0

Java 8 以降のMath APIでは、以下を使用できます。

Math.addExact(i, 1);

ArithmeticException結果が をオーバーフローすると、がスローされintます。

于 2016-04-29T10:40:03.483 に答える