হ্যাঁ, একটি মেথডে রিটার্ন স্টেটমেন্টের পরেও finally ব্লক এক্সিকিউট হবে।
finally ব্লক সবসময় এক্সিকিউট হবে এক্সেপশন ঘটে কিনা সেটা নিশ্চিত না করে। যদি আমরা finally ব্লকে স্পষ্টভাবে System.exit() মেথড কল করি তবে শুধু তখন এটি এক্সিকিউট হবে না। কিছু পরিস্থিতি আছে যেখানে finally এক্সিকিউট হবে না যেমন JVM ক্র্যাশ, পাওয়ার ফেইলার, সফ্টওয়্যার ক্র্যাশ ইত্যাদি। এই শর্তগুলো ছাড়া 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