کدی که در finally نوشته میشه تقریباً حتماً اجرا میشه حتی بدون در نظر گرفتن اینکه با catch اکسپشنی مدیریت شده باشه یا نه، به خاطر همین try finally بدون catch هم حتی وجود داره که به این معنیه که نوع catchها تأثیری رو اجرا تضمینیه finally نداره.
کد داخل finally حتی اگه اکسپشن داخل catch هم اتفاق بیافته هم اجرا میشه.
بررسی با مثال
public class C1 {
public static void main(String[] args) throws Exception {
System.out.println(0);
try {
System.out.println(1);
throw new Exception();
} catch (Exception i) {
System.out.println(2);
throw new Exception();
} finally {
System.out.println(3);
}
// System.out.println(4); این کد اجرا نمیشه
}
}
که نتیجه میده:
1
2
3
Exception in thread "main" java.lang.Exception
بررسی این هم خالی از لطف نیست:
https://stackoverflow.com/q/3779285