natknąłem to pytanie i nie jestem w stanie zrozumieć przyczynę wyjściem jest dawanie.String powraca w końcu i próbować blokować
Program:
public static String method(){
String s = new String();
try
{
s = "return value from try block";
return s;
}
catch (Exception e)
{
s = s + "return value from catch block";
return s;
}
finally
{
s = s + "return value from finally block";
}
}
Wyjście jest: wartość
powrót z bloku try
Teraz debugowany go i wartość s
w return s
oświadczenie, w try
blok return value from try block
, return value from catch block
po niej returned from finally block
.
Wciąż wyjście jest:
wartośćpowrót z bloku try
Może ktoś proszę wyjaśnić to zachowanie?
Zobacz ten https: // stackoverflow.com/questions/65035/does-finally-always-execute-in-java – mmuzahid
Myślę, że znajdziesz tu więcej wyjaśnień [Try-catch-finally-return clarification - Stack Overflow] (https://stackoverflow.com/questions/15225819/try-catch-finally-return-clarification) –
Odpowiedź będzie pochodzić z dokumentacji oracle: "Blok finally jest zawsze wykonywany po wyjściu bloku try, co zapewnia, że blok finally zostanie wykonany, nawet jeśli wystąpi nieoczekiwany wyjątek. " sprawdź to odwołanie: https://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html – Oghli