ใช่ finally block จะทำงานเสมอ แม้จะมี return statement ในเมธอด
finally block จะ execute เสมอ ไม่ว่าจะมี exception หรือไม่ ใน Java หากเรียก System.exit() อย่างชัดเจนใน finally block จึงจะไม่ทำงาน มีสถานการณ์น้อยที่ finally ไม่ทำงาน เช่น JVM crash, power failure, software crash นอกจากนี้ finally จะทำงานเสมอ
ตัวอย่าง
public class FinallyBlockAfterReturnTest {
public static void main(String[] args) {
System.out.println(count());
}
public static int count() {
try {
return 1;
} catch(Exception e) {
return 2;
} finally {
System.out.println("Finally block will execute even after a return statement in a method");
}
}
}
ผลลัพธ์
Finally block will always excute even after a return statement in a method 1