Junior — Middle
Ar būtinai įvyks kompiliavimo klaida, jei metodas turi throws deklaraciją ir kviečiantis kodas jos neapdoroja?
sobes.tech AI
Atsakymas iš AI
В Java, если метод объявляет checked исключение через throws, то вызывающий код обязан либо обработать это исключение (try-catch), либо также объявить throws в своей сигнатуре. Если этого не сделать, то возникнет ошибка компиляции.
Однако, если метод объявляет unchecked исключение (наследник RuntimeException), то компилятор не требует обязательной обработки, и ошибки компиляции не будет.
Пример:
public void method() throws IOException { }
public void caller() {
method(); // Ошибка компиляции, если не обработать IOException
}
public void callerHandled() {
try {
method();
} catch (IOException e) {
e.printStackTrace();
}
}
Таким образом, ошибка компиляции возникает только если не обработано checked исключение, объявленное в throws.