go to previous page   go to home page   go to next page

Answer:

Yes.


throw Statement

Here is another version of the program. This time, the try block detects potential division by zero in an if statement and throws an Exception.

    // Version 3
    //
    try
    { 
      System.out.print("Enter the numerator: ");
      num = scan.nextInt();
      System.out.print("Enter the divisor  : ");
      div = scan.nextInt();
      
      if ( div == 0 ) throw new ArithmeticException()
      
      System.out.println( num + " / " + div + " is " + (num/div) + " rem " + (num%div) );
    } 
    catch (InputMismatchException ex )
    { 
      System.out.println("You entered bad data." );
      System.out.println("Run the program again." );
    }
    catch (ArithmeticException ex )
    { 
      System.out.println("You can't divide " + num + " by " + div);
    } 
  }

When a zero divisor is detected, the new operator constructs an Exception object which is thrown, and is then caught by a catch block. If the throw is performed, the rest of the try block will not be executed.

This version of the program is awkward. There is no advantage here in explicitly throwing an Exception. Version 2 is the best version of these three. (Other versions are possible. If you are not careful, combining exception handling with logic can produce a real mess.)


QUESTION 16:

Here is a program fragment. What does it print?

int[] data = { 3, 2, -3, 5 };
int sum = 0;
int avg;

try
{ 
 for ( int j=0; j<=4; j++ ) sum += data[j];
 avg = sum/0 ;
} 
catch ( ArrayIndexOutOfBoundsException ex  )
{ 
  System.out.println("Off by one." );
}
catch ( RuntimeException ex  )
{ 
  System.out.println("Runtime Problem." );
}
catch ( Exception ex  )
{ 
  System.out.println("Exception" );
}
System.out.println("sum is" + sum );

go to previous page   go to home page   go to next page