2

例外についていくつか疑問があります。

サブクラスでチェックされていない例外を許可しているのに、サブクラスでチェックされた例外を作成することをJavaが許可しない理由を誰か教えてください

以下の例では、「throws IOException」を使用するとコンパイル時エラーがスローされますが、サブクラスで「throws ArithmeticException」を使用するとエラーはスローされません。その背後にある実際の理由を知りたいだけなので、お願いできますか?

これがコードです(コンパイル時エラーが発生します)

package com.exception.test;

import java.io.IOException;

public class Parent {

    void msg()  {
        System.out.println("Parent...");
    }

    public static void main(String[] args) {
        Parent parent = new Child();
        parent.msg();
    }
}


class Child extends Parent {

    void msg() throws IOException   {
        System.out.println("Child...");
    }

}

//unCheckedException の使用

package com.exception.test;

import java.io.IOException;

public class Parent {

    void msg()  {
        System.out.println("Parent...");
    }

    public static void main(String[] args) {
        Parent parent = new Child();
        parent.msg();
    }
}


class Child extends Parent {

    void msg() throws ArithmeticException   {
        System.out.println("Child...");
    }

}
4

4 に答える 4