Если я "выбрасываю новую Error ()" в методе, в чем разница между добавлением и не добавлением "throws Error" в объявлении метода? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть следующая программа -

private static void fun() throws Error {
        System.out.println("I am having fun");
        throw new Error();
    }

    private static void enjoy() {
        System.out.println("I am enjoying");
        throw new Error();
    }

    public static void main(String[] args) {
        try {
            fun();
        } catch(Error e) {
            System.out.println(e);
        }

        System.out.println("\n");

        try {
            enjoy();
        } catch(Error e) {
            System.out.println(e);
        }
    }

Здесь я объявил два метода - fun() и enjoy()

Оба имеют

throw new Error() оператор

Однако

fun() имеет throws Error, добавленный к объявлению метода

, тогда как

enjoy() не имеет его.

Но оба дают одинаковый вывод -

I am having fun
java.lang.Error


I am enjoying
java.lang.Error

Итак, в чем же смысл добавления throws Error к объявлению метода?

1 Ответ

1 голос
/ 27 марта 2020

В Java существует два вида исключений. Проверено и Не проверено . Вам не нужно добавлять throws для непроверенных исключений. Вам также не нужно catch их. Это не случайность. В этом разница между проверенными и непроверенными исключениями. Error (чтобы быть явным) является непроверенным исключением, и Javado c говорит (частично)

То есть, Error и ее подклассы рассматриваются как непроверенные исключения для проверки исключений во время компиляции.

...