IOException vs RuntimeException Java

class Y {
    public static void main(String[] args) throws RuntimeException{//Line 1
        try {
            doSomething();
        }
        catch (RuntimeException e) {
            System.out.println(e);
        }
    }
    static void doSomething() throws RuntimeException{ //Line 2
        if (Math.random() > 0.5) throw new RuntimeException(); //Line 3
        throw new IOException();//Line 4
    }
}

Когда я выбрасываю два типа исключений (IOException в Line4 и RunTimeException в Line3), я обнаружил, что моя программа не компилируется, пока я не укажу "IOException» в моих предложениях бросков в строке 1 & Строка 2

Принимая во внимание, если я перевернуброски» чтобы указать, что IOException выбрасывается, программа успешно компилируется, как показано ниже.

class Y {
    public static void main(String[] args) throws IOException {//Line1
        try {
            doSomething();
        }
        catch (RuntimeException e) {
            System.out.println(e);
        }
    }
    static void doSomething() throws IOException {//Line 2
        if (Math.random() > 0.5) throw new RuntimeException();//Line 3
        throw new IOException();//Line 4
    }
}

Почему я всегда должен использоватьброски» для IOException, хотя RuntimeException также выбрасывается (строка 3)?

Ответы на вопрос(2)

Ваш ответ на вопрос