为什么它不抛出每个API和异常?
返回递增 1 的参数,如果 结果溢出一个整数。
System.out.println(Math.incrementExact(2_147_483_647 + 1));
返回 -2147483647
这是因为您将Integer.MIN_VALUE
传递给Math.incrementExact
函数。
首先计算表达式2_147_483_647 + 1
,由于表达式溢出,结果-2147483648
。然后你把它传递给Math.incrementExact
,这会导致-2147483647
。
你想做的是
System.out.println(Math.incrementExact(2_147_483_647));
这会导致java.lang.ArithmeticException: integer overflow
.
因为你已经比最大值多了一个。 首先评估2_147_483_647 + 1
。
试试System.out.println(Math.incrementExact(2_147_483_646 + 1));