gpt4 book ai didi

java - 如何引发整数溢出异常?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:27:08 26 4
gpt4 key购买 nike

<分区>

如果我除以零,我会得到一个 java.lang.ArithmeticException,如本例所示:

int a = 3/0;

我想使整数溢出也导致异常。所以下面的程序会抛出异常而不是打印 -2147483648。

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

我知道我可以使用 BigInteger,它不会溢出并且仅受可用内存的限制。

我知道我可以制作自己的 add 函数来检查溢出。或者我可以使用 Java 8 Math.addExact .

我意识到我要求的行为有悖于JLS at 15.18.2

If an integer addition overflows, then the result is the low-order bits of the mathematical sum as represented in some sufficiently large two's-complement format. If overflow occurs, then the sign of the result is not the same as the sign of the mathematical sum of the two operand values.

除了修改JVM 的源代码并使用修改后的JVM。有什么办法可以做到这一点?甚至修改 JVM 的源代码也是不够的,因为库可能依赖于该行为,我不希望它们受此影响,只有我的代码。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com