A good answer might be:

The catch{} blocks are in a correct order, because ArithmeticException is not an ancestor nor a descendant of NumberFormatException. The other order of the two blocks would also work.


Possible Exceptions

In the example program, the try{} block might throw (1) an IOException, (2) a NumberFormatException, or (3) an ArithmeticException.

  public static void main ( String[] a ) throws IOException
     . . . .

    try
    {
      System.out.println("Enter the numerator:");
      inData = stdin.readLine();
      num    = Integer.parseInt( inData );

      System.out.println("Enter the divisor:");
      inData = stdin.readLine();
      div    = Integer.parseInt( inData );

      System.out.println( num + " / " + div + " is " + (num/div) );
    }
    catch (NumberFormatException ex )
    {
      . . .
    }

    catch (ArithmeticException ex )
    {
      . . .
    }
  }

An IOException might occur in either readLine() statement. There is no catch{} block for this type of exception, so the method has to say throws IOException.

A NumberFormatException might occur in either call to parseInt(). The first catch{} block is for this type of exception. It will catch exceptions thrown from either parseInt().

An ArithmeticException might occur if the user enters data that can't be used in an integer division. The second a catch{} block is for this type of exception.

QUESTION 13:

What type of exception is thrown if the user enters a 0 for the divisor?