オーバーフローを検出したい場合
int型変数の計算の結果のオーバーフローを検出したい場合、Math#addExact
メソッドを利用した以下の方法でできる。(Java8以降のみ)
try {
int a = Integer.MAX_VALUE;
int b = 1;
// オーバーフローチェック
int sum = Math.addExact(a, b);
} catch (ArithmeticException e) {
// オーバーフローした場合
e.printStackTrace();
}
もしくは、Math#toIntExact
メソッドを利用した以下の方法でも可能。
try {
int a = Integer.MAX_VALUE;
int b = 1;
// オーバーフローチェック
int sum = Math.toIntExact((long)a + (long)b);
} catch (ArithmeticException e) {
// オーバーフローした場合
e.printStackTrace();
}