/*
this is a demo of the try-catch-finally exception handling
it produces the following output:

  Method throwException()
  Exception handled in throwException()
  Finally executed in throwException()
  Method doesNotThrowException()
  Finally executed in doesNotThrowException()
*/

public class UsingExceptions1
{
  public static void main(String[] args)
  {
    try
    {
      throwException();
    }
    catch(Exception e)
    {
      System.out.println("Exception handled in main");
    }

    doesNotThrowException();
  }

  public static void throwException() throws Exception
  {
    try
    {
      System.out.println("Method throwException()");
      throw new Exception();
    }
    catch(Exception e)
    {
      System.out.println("Exception handled in throwException()");
    }
    finally
    {
      System.out.println("Finally executed in throwException()");
    }
  }

  public static void doesNotThrowException() 
  {
    try 
    {
      System.out.println("Method doesNotThrowException()");
    }
    catch(Exception e)
    {
      System.out.println("Exception handled in doesNotThrowException()");
    }
    finally
    {
      System.out.println("Finally executed in doesNotThrowException()");
    }
  }
}
