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