エラー処理について、ちょっと学んだ。

  1 public class Main {
  2   public static void main(String[] args) {
  3     try {
  4       Proc p = new Proc();
  5       p.abc();
  6     } catch (Hello e) {
  7       System.out.println(e.getMessage());
  8       e.one();
  9     } finally {
 10       System.out.println("bye......");
 11     }
 12   }
 13 }
  1 import java.lang.Throwable;
  2 
  3 public class Proc {
  4 
  5   public Proc() {
  6   }
  7 
  8   public void abc() throws Hello{
  9     throw new Hello();
 10   }
 11 }
  1 public class Hello extends Exception {
  2 
  3   public Hello() {
  4     super("ABC");
  5   }
  6 
  7   public void one() {
  8     System.out.println("one");
  9   }
 10   public void two() {
 11     System.out.println("two");
 12   }
 13   public void three() {
 14     System.out.println("three");
 15   }
 16 }

実行してみる

$ javac Hello.java
$ javac Proc.java
$ javac Main.java
$ java Main
$ ~/Desktop/Wrk 16440 $ java Main
ABC
one
bye......

なぜ、このようなコードを書くと、このような実行結果になるか分かっているのか?
>自分