try-catch for division by zero

Firat picture Firat · Feb 13, 2010 · Viewed 45.1k times · Source

My question is about try-catch blocks on a simple division by zero example. You see the first line of try? If I cast any of those two variables to the double the program does not recognize the catch block. In my opinion, whether I cast or not only the catch block must be executed. What is wrong on this code?

public static void main(String[] args) {

    int pay=8,payda=0;  

    try {

        double result=pay/(double)payda; // if I cast any of the two variables, program does not recognize the catch block, why is it so?
        System.out.println(result);
        System.out.println("inside-try");

    } catch (Exception e) {

        System.out.println("division by zero exception");
        System.out.println("inside-catch");

    }
}

Answer

kennytm picture kennytm · Feb 13, 2010

Divide by zero is valid for floating point numbers.

  • 1/0 yields Infinity.
  • (-1)/0 yields -Infinity.
  • 0/0 yields NaN.

These "numbers" are properly defined in IEEE 754.

Integer division by zero, on the other hand, throws because one cannot represent infinity as an int.