Language Basics Java

// : c09:RethrowNew.java
// Rethrow a different object from the one that was caught.
// {ThrowsException}
// From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
// www.BruceEckel.com. See copyright notice in CopyRight.txt.
class OneException extends Exception {
  public OneException(String s) {
    super(s);
  }
}
class TwoException extends Exception {
  public TwoException(String s) {
    super(s);
  }
}
public class RethrowNew {
  public static void f() throws OneException {
    System.out.println("originating the exception in f()");
    throw new OneException("thrown from f()");
  }
  public static void main(String[] args) throws TwoException {
    try {
      f();
    } catch (OneException e) {
      System.err.println("Caught in main, e.printStackTrace()");
      e.printStackTrace();
      throw new TwoException("from main()");
    }
  }
} ///:~