Класс исключения объявлен, но не брошен

Здесь тест не выбрасывает объект Exception, но я его обработал. Поскольку исключение является проверенным исключением, оно не должно вызывать ошибку компилятора недоступного кода в блоке catch

class Ece extends Exception {}
public class Excep {
    public static void test()  { }
    public static void main(String[] args) {
        try {
            test();
        } catch (Exception E) {

        }
    }
}

1 ответ

Решение

Класс Exception имеет RuntimeException как подкласс. RuntimeException и его подклассы не должны быть объявлены в подписи метаданных.

В этом случае вы ловите все возможные подклассы Exception, включая все те подклассы, которые не нуждаются в объявлении подписи. Если твой test метод кидает например ArrayIndexOutOfBoundsException вы сможете поймать и справиться с этим, пока test подпись не пострадает.

Дальнейшее чтение здесь

Другие вопросы по тегам