مشخصات مقاله
-
1553
-
0.0
-
4634
-
0
-
0
آموزش Java – کار با دستور finally در Java
آموزش Java – کار با دستور finally در Java
قطعه کد finally میزبان کدهایی است که اجرای آن ها بسیار مهم است نظیر بستن connection به دیتابیس یا متوقف کردن stream از بایت ها و غیره ... . دستور finally صرف نظر این که خطایی در برنامه رخ داده و مدیریت می شود یا خیر، اجرا خواهد شد و به عبارت دیگر فراخوانی آن قطعی است. finally همیشه پس از try یا catch استفاده می شود.
اگر خطای رخ داده را قبل از خاتمه ی برنامه، مدیریت نکنید، JVM قطعه کد finally را اجرا می کند.
دلیل استفاده از ساختار دستوری Finally
- می توان داخل بدنه ی finally کدهای مهمی نظیر بستن یک فایل، قطع connection به دیتابیس و غیره ... را جایگذاری کرد.
استفاده ی کاربردی از finally در جاوا
در زیر موارد مختلفی که می توان در آن ها از finally استفاده کرد را مشاهده می کنید.
مثال 1Let's see the java finally example where exception doesn't occur.
class TestFinallyBlock{
public static void main(String args[]){
try{
int data=25/5;
System.out.println(data);
}
catch(NullPointerException e){System.out.println(e);}
finally{System.out.println("finally block is always executed");}
System.out.println("rest of the code...");
}
}
خروجی:
5 finally block is always executed rest of the code...مثال 2
در زیر نمونه ای را مشاهده می کنید که در آن خطا رخ داده، اما مدیریت نمی شود.
class TestFinallyBlock1{
public static void main(String args[]){
try{
int data=25/0;
System.out.println(data);
}
catch(NullPointerException e){System.out.println(e);}
finally{System.out.println("finally block is always executed");}
System.out.println("rest of the code...");
}
}
خروجی:
finally block is always executed
Exception in thread main java.lang.ArithmeticException:/ by zero
مثال 3
در زیر مثالی را مشاهده می کنید که در آن خطا رخ داده و بلافاصله مدیریت می شود.
public class TestFinallyBlock2{
public static void main(String args[]){
try{
int data=25/0;
System.out.println(data);
}
catch(ArithmeticException e){System.out.println(e);}
finally{System.out.println("finally block is always executed");}
System.out.println("rest of the code...");
}
}
خروجی:
Exception in thread main java.lang.ArithmeticException:/ by zero
finally block is always executed
rest of the code...
به ازای هر قطعه کد try می توان 0 یا چندین دستور catch داشت در حالی که قطعه کد finally می تواند تنها یکبار استفاده شود.
چنانچه برنامه به هر دلیلی خاتمه یابد (برای مثال به سبب فراخوانی متد System.exit() یا رخداد خطای جدی که سبب می شود فرایند میزبان متوقف شود)، در آن صورت قطعه کد finally اجرا نخواهد شد.