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 处的值在没有通知我的情况下被忽略。

我使用 Netbeans IDE 运行此代码。

是否可以配置系统在发生此类算术溢出时通知我们?

4

2 回答 2

4

请参阅Java 语言规范中的最后一句话(第 15.18.2 章。数字类型的加法运算符(+ 和 -)):

尽管可能会发生上溢、下溢或信息丢失,但数值加法运算符的求值永远不会引发运行时异常。

有关此问题的长篇文章和解决方法的介绍,请参阅文章Signaling Integer Overflows in Java

于 2012-10-14T07:48:13.647 回答
0

在Java 8 之后的Math API中,您可以使用:

Math.addExact(i, 1);

ArithmeticException如果结果溢出,它将抛出int

于 2016-04-29T10:40:03.483 回答