Control Flow  «Prev 


Normal Execution Flow

throw Statement in Java

You have only been catching exceptions that are thrown by the Java run-time system. However, it is possible for your program to throw an exception explicitly, using the throw statement. The general form of throw is shown here: throw ThrowableInstance; Here, ThrowableInstance must be an object of type Throwable or a subclass of Throwable. Primitive types, such as int or char, as well as non-Throwable classes, such as String and Object, cannot be used as exceptions. There are two ways you can obtain a Throwable object: using a parameter in a catch clause or creating one with the new operator. The flow of execution stops immediately after the throw statement; any subsequent statements are not executed. The nearest enclosing try block is inspected to see if it has a catch statement that matches the type of exception. If it does find a match, control is transferred to that statement. If not, then the next enclosing try statement is inspected, and so on. If no matching catch is found, then the default exception handler halts the program and prints the stack trace. Here is a sample program that creates and throws an exception. The handler that catches the exception rethrows it to the outer handler.

// Demonstrate throw.
class ThrowDemo {
 static void demoproc() {
  try {
   throw new NullPointerException("demo");
  } 
  catch(NullPointerException e) {
   System.out.println("Caught inside demoproc.");
   throw e; // rethrow the exception
  }
 }
 public static void main(String args[]){
  try {
   demoproc();
  } 
  catch(NullPointerException e) {
   System.out.println("Recaught: " + e);
  }
 }
}

This program gets two chances to deal with the same error. First, main( ) sets up an exception context and then calls demoproc( ). The demoproc( ) method then sets up another exception-handling context and immediately throws a new instance of NullPointerException, which is caught on the next line. The exception is then rethrown. Here is the resulting output:
Caught inside demoproc.
Recaught: java.lang.NullPointerException: demo
The program also illustrates how to create one of Java’s standard exception objects. Pay close attention to this line:
throw new NullPointerException("demo");

Here, new is used to construct an instance of NullPointerException. Many of Java’s built-in run-time exceptions have at least two constructors: one with no parameter and one that takes a string parameter. When the second form is used, the argument specifies a string that describes the exception. This string is displayed when the object is used as an argument to print( ) or println( ). It can also be obtained by a call to getMessage( ), which is defined by Throwable.
Java Virtual Machine
1)An exception is thrown to indicate an abnormal condition. The normal flow of execution is interrupted
1) An exception is thrown to indicate an abnormal condition. The normal flow of execution is interrupted.

2) If the exception is not caught, the program terminates with an error message.
2) If the exception is not caught, the program terminates with an error message.

3) If the exception is caught, exception handling code processes the exception.
3) If the exception is caught, exception handling code processes the exception.

4) Control is returned to the program at the finally clause of the try-catch statement in which the exception is caught. If no finally clause is provided, control is returned after the try-catch statement in which the exception is caught
4) Control is returned to the program at the finally clause of the try-catch statement in which the exception is caught. If no finally clause is provided, control is returned after the try-catch statement in which the exception is caught.