クラスの継承について
以下のように、throwsを含むメソッドをオーバライドする場合、 throwsも引き継ぐ必要はない。
class Animal { Animal() { System.out.println("Maiking an Animal"); } void hoge() throws Exception { System.out.println("animal.hoge"); throw new Exception(); } } class Hippo extends Animal { Hippo() { System.out.println("Maiking an Hippo"); } void hoge() { System.out.println("Hippo.hoge"); } }
逆に、以下の場合はNG。
オーバライド元に同じException型のthrows節がなければならない。
class Animal { Animal() { System.out.println("Maiking an Animal"); } void hoge() { System.out.println("animal.hoge"); } } class Hippo extends Animal { Hippo() { System.out.println("Maiking an Hippo"); } void hoge() throws HogeException { System.out.println("Hippo.hoge"); throw new HogeException(); } }