next up previous contents
Next: Threads Up: Java Notes Previous: Exceptions 4: Throw 1

Exceptions 5: Throw 2

/**
 *  This code is from the book:
 *  Winder, R and Roberts, G (1998)
 *  Developing Java Software
 *  John Wiley & Sons.
 *  It is copyright (c) 1997 Russel Winder
 *  and Graham Roberts.
 */

class l1Except5{//Exception4
  //Throw an eception and catch it in the same method.
  //This may or may not be useful!
  public void f(){
    try{
      throw new Exception("thrown in f");
    }
    catch (Exception e){
      System.out.println(e.getMessage());
    }
  }

  //Method just throws an exception so must include
  //a throws declaration.
  public void g() throws Exception{
    throw new Exception("thrown in g");
  }

  public void h() throws Exception{
    try{
      g();
    }
    catch (Exception e){
      //print a stack trace to see the active
      //method chain
      e.printStackTrace();
      //Reset stack trace so that it starts from here
      e. fillInStackTrace();

      //Re-throw the exception to let another method
      //in the active method chain handle it.
      throw e;
    }
  }

  //Catch the exception and prevent further
  //propagation.
  public void k(){
    try{
      h();
    }
    catch (Exception e){
      e.printStackTrace();
    }
  }

  //Some extra methods to deepen the stack trace.
  public void x(){
    k();
  }

  public void y(){
    x();
  }

  public static void main(String[] args){
    l1Except5 e4 = new l1Except5();
    e4.f();
    e4.y();
  }
}
/******** sample compilation & run ******
# javac l1Except5.java
# java l1Except5     
thrown in f
java.lang.Exception: thrown in g
        at l1Except5.g(l1Except5.java:19)
        at l1Except5.h(l1Except5.java:24)
        at l1Except5.k(l1Except5.java:43)
        at l1Except5.x(l1Except5.java:52)
        at l1Except5.y(l1Except5.java:56)
        at l1Except5.main(l1Except5.java:62)
java.lang.Exception: thrown in g
        at l1Except5.h(l1Except5.java:31)
        at l1Except5.k(l1Except5.java:43)
        at l1Except5.x(l1Except5.java:52)
        at l1Except5.y(l1Except5.java:56)
        at l1Except5.main(l1Except5.java:62)
# 
******************************************/



Ananda Amatya
9/15/1999