如果我除以零,我会得到一个java.lang.ArithmeticException,如下例所示:
int a = 3/0;
Run Code Online (Sandbox Code Playgroud)
我想这样做,整数溢出也会导致异常.因此,以下程序将抛出异常而不是打印-2147483648.
public static void main(String[] args) {
int a = Integer.MAX_VALUE + 1;
System.out.println( a );
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用BigInteger,它不会溢出,只受可用内存的限制.
我知道我可以创建自己的add函数来检查溢出.或者我可以使用Java 8 Math.addExact.
如果整数加法溢出,则结果是数学和的低阶位,如某些足够大的二进制补码格式所示.如果发生溢出,则结果的符号与两个操作数值的数学和的符号不同.
除了修改JVM的源代码和使用这样修改过的JVM之外.有没有办法来实现这个?甚至修改JVM的源代码也是不够的,因为库可能依赖于这种行为,我不希望它们受到这种影响,只有我的代码.
| 归档时间: |
|
| 查看次数: |
4118 次 |
| 最近记录: |