Декларация интерфейса с непроверенными против проверенных исключений

Я искал потенциальный ответ на свой вопрос ниже и не нашел его.

Я понимаю разницу между проверенными и непроверенными исключениями, а также что с ними может/должен делать программист. Однако я не совсем понимаю, как компилятор интерпретирует непроверенные исключения, когда дело касается интерфейсов.

Недавно я программировал интерфейс и реализацию, похожую на следующую:

public interface Operation {
    int operate(int x, int y) throws ArithmeticException;
}

public class Divide implements Operation {
    @Override
    public int operate(int x, int y) throws ArithmeticException {
        try {
            return x / y;
        } catch (ArithmeticException ex) {
            System.out.println("Division error!");
        }
    }
}

Вот где я запутался. Также компилируется следующая реализация:

public class Divide implements Operation {
    @Override
    public int operate(int x, int y) {
        return x / y;
    }
}

Почему компилятору все равно, что я объявил метод бросающим исключение в интерфейс? Я понимаю, что Unchecked Exceptions - это Runtime Exceptions, и что от программиста не требуется обрабатывать их, но не понимаю, почему, когда я явно заявляю в интерфейсе, что хочу, чтобы исключение было обработано, что это не заставляет меня обрабатывать его.

Кто-нибудь может объяснить, почему компилятор допускает такую ситуацию?

8
задан Zach 18 July 2011 в 16:31
поделиться