Am запутался о том, как, наконец, ключевое слово на самом деле работает ..., наконец, не работает, как ожидалось
Перед попытка блока выполняется до завершения он возвращается туда, где метод был вызван. Но, прежде чем он вернется к методу вызова, код в блоке finally все еще выполняется. Итак, помните, что код в блоке finally будет выполняться, даже если есть оператор возврата где-то в блоке try.
когда я запускаю код, я получаю 5 вместо 10, как я ожидал
public class Main {
static int count = 0;
Long x;
static Dog d = new Dog(5);
public static void main(String[] args) throws Exception {
System.out.println(xDog(d).getId());
}
public static Dog xDog(Dog d) {
try {
return d;
} catch (Exception e) {
} finally {
d = new Dog(10);
}
return d;
}
}
public class Dog {
private int id;
public Dog(int id) {
this.id = id;
}
public int getId() {
return id;
}
}
http://stackoverflow.com/questions/65035/does-finally-always-execute-in-java –
окончательный блок выполняется после заявления о возврате, поэтому у вас есть 5 не 10 –