public class DeteksiLuapan {
    public static void main(String[] args) {
        try {
            int hasil = Math.addExact(Integer.MAX_VALUE, 1);
            System.out.println("tidak terjadi luapan: " + hasil);
        } catch (ArithmeticException e) {
            System.out.println("terdeteksi: " + e.getMessage());
        }

        try {
            int hasil = Math.multiplyExact(1_000_000, 3_000);
            System.out.println("tidak terjadi luapan: " + hasil);
        } catch (ArithmeticException e) {
            System.out.println("terdeteksi: " + e.getMessage());
        }

        int penduduk = 8_600_000;                 // int aman
        long total = (long) penduduk * 365;       // naikkan dulu ke long
        System.out.println("penduduk * 365 = " + total);

        try {
            long besar = Long.MAX_VALUE;
            long hasil = Math.addExact(besar, 1);
            System.out.println("tidak terjadi luapan: " + hasil);
        } catch (ArithmeticException e) {
            System.out.println("terdeteksi: " + e.getMessage());
        }
    }
}
