Я искал потенциальный ответ на свой вопрос ниже и не нашел его.
Я понимаю разницу между проверенными и непроверенными исключениями, а также что с ними может/должен делать программист. Однако я не совсем понимаю, как компилятор интерпретирует непроверенные исключения, когда дело касается интерфейсов.
Недавно я программировал интерфейс и реализацию, похожую на следующую:
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, и что от программиста не требуется обрабатывать их, но не понимаю, почему, когда я явно заявляю в интерфейсе, что хочу, чтобы исключение было обработано, что это не заставляет меня обрабатывать его.
Кто-нибудь может объяснить, почему компилятор допускает такую ситуацию?