Это был вопрос интервью:
public class Demo {
public static void main(String[] args) {
System.out.println(foo());
}
static String foo() {
try {
return "try ...";
} catch (Exception e) {
return "catch ...";
} finally {
return "finally ..."; //got as result
}
}
}
Мой вопрос в том, почему нет ошибок времени компиляции. Когда у меня есть оператор return в моем блоке finally
, он обязан вернуться из finally
вместо try
и catch
. Я попытался скомпилировать этот код с опцией -Xlint
, он дает предупреждение как.
warning: [finally] finally clause cannot complete normally