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

class j262a {
  //(1)
  static void m() throws ArithmeticException {
    int a,b;
    System.out.println("m()実行");
    a = 1;
    b = 1/(a-1); //(2)
  } 

  public static void main(String args[]) {

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

    try { //(3)
      System.out.println("(3)tryブロック開始");
      m(); //(4) 
      System.out.println("(3)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 j262a.java
% java j262a
プログラム開始
(3)tryブロック開始
m()実行
(5)catchブロック(Exception)開始
java.lang.ArithmeticException: / by zero
(5)catchブロック(Exception)終了
(6)finallyブロック開始
(6)finallyブロック終了
プログラム終了