////////////////////////////////////////////////////////////////////////////////
//  << j262b.java >>
//
//  クラス(6):例外(自作の例外処理、自メソッド外で処理)
//
//    自作の例外処理、自メソッド外で処理を確認する。
//
//  (1)自作の例外クラス。
//  (2)自メソッド外に例外クラスを送出するメソッドの記述。
//  (3)例外発生。
//  (4)tryブロック。
//  (5)例外クラスを送出するメソッド。
//    (6)catchブロック:Exception
//  (7)finallyブロック
//
////////////////////////////////////////////////////////////////////////////////

//(1)
class MyException extends Exception {
  MyException() { // コンストラクタ。
    System.out.println("自作例外クラスが呼び出されました");
  }
}

class j262b {
  //(2)
  static void m() throws MyException {
    System.out.println("メソッドm()が実行されました");
    MyException e = new MyException();
    throw e; //(3)
  }

  public static void main(String args[]) {

    System.out.println("プログラム開始");

    try { //(4)
      System.out.println("(4)tryブロック開始");
      m(); //(5) 
      System.out.println("(4)tryブロック終了");

    } catch ( Exception e ) { //(5)
      System.out.println("(5)catchブロック(Exception)開始");
      System.out.println(e); // エラーの詳細を表示。
      System.out.println("(5)catchブロック(Exception)終了");

    } finally { //(6)
      System.out.println("(6)finallyブロック開始");
      System.out.println("(6)finallyブロック終了");
    }

    System.out.println("プログラム終了");

  }

}
実行結果
% javac j262b.java
% java j262b
プログラム開始
(4)tryブロック開始
メソッドm()が実行されました
自作例外クラスが呼び出されました
(5)catchブロック(Exception)開始
MyException
(5)catchブロック(Exception)終了
(6)finallyブロック開始
(6)finallyブロック終了
プログラム終了