3
如果我除以零,我得到一個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
如果整數加法溢出,那麼結果是低位在一些足夠大的 所表示的數學總和 位二進制補碼格式。如果發生溢出,那麼 結果的符號與兩個 操作數值的數學和的符號不同。
除了修改JVM的源代碼並使用這種修改後的JVM。有什麼辦法來實現這個嗎?甚至修改JVM的源代碼也是不夠的,因爲庫可能取決於這種行爲,我不希望它們受到此影響,只有我的代碼。