مشخصات مقاله
-
1800
-
0.0
-
8711
-
0
-
0
آموزش Java – کار با دستورهای try-catch در Java
آموزش Java – کار با دستورهای try-catch در Java
ساختار دستور try/قعطه کد try در Java
داخل بدنه ی try کدی که ممکن است سبب رخداد خطا شود را قرار می دهند. بعد از قطعه کد try حتما باید یا دستور catch و یا finally استفاده شود. کدی که ممکن است اجرای آن منجر به خطا شود، بایستی داخل قطعه کد try قرار داده شده و در واقع در این قسمت از برنامه امتحان شود تا امکان اجرای موفقیت آمیز آن مشخص گردد.
دستور نگارشی (syntax) try-catch
try{
//code that may throw exception
}catch(Exception_class_Name ref) {}
دستور نگارشی (syntax) try-finally
try{
//code that may throw exception
}finally{}
قطعه کد catch در Java
قطعه کد catch برای مدیریت خطاهای رخ داده در بدنه ی try، بکار می روند. این قطعه کد منحصرا بایستی پس از قطعه try درج شود.
می توانید پس از یک قطعه کد try چندین قطعه کد catch داشته باشید.
مشکلاتی که در صورت عدم استفاده از exception handling در برنامه رخ می دهد
در زیر می بینید که بدون استفاده از try-catch چه مشکلاتی رخ می دهد.
public class Testtrycatch1 {
public static void main (String args[]){
int data=50/0;//may throw exception
System.out.println("rest of the code...");
}
}
خروجی:
Exception in thread main java.lang.ArithmeticException:/ by zero
همان طور که در مثال بالا مشاهده می کنید، بقیه ی دستورات اجرا نشده و متنی در خروجی چاپ نمی شود. در سایر برنامه ها ممکن است پس از خطی که خطا در آن رخ می دهد، 100 دستور دیگر وجود داشته باشد که اگر خطا رخ دهد، تمامی آن ها اجرا نخواهند شد.
برطرف کردن مشکل با استفاده از Exception Handling
در زیر توسعه دهنده با استفاده از قطعه کد try-catch مشکل را برطرف می سازد.
public class Testtrycatch2 {
public static void main(String args[]){
try{
int data=50/0;
}catch (ArithmeticException e){System.out.println(e);}
System.out.println("rest of the code...");
}
}
خروجی:
Exception in thread main java.lang.ArithmeticException:/ by zero rest of the code...
همان طور که در مثال بالا مشاهده می کنید، باقی کد اجرا شده و رشته ی مورد نظر در خروجی چاپ می شود.
عملکرد داخلی قطعه کد try-catch
JVM ابتدا بررسی می کند آیا خطا مدیریت شده است یا خیر. اگر خطا مدیریت نشده باشد، در آن صورت دستگاه مجازی جاوا (JVM) یک exception handler پیش فرض جهت مدیریت خطاها فراهم می کند که به ترتیب عملیات زیر را انجام می دهد:
- توصیفی از خطای رخ داده را در خروجی چاپ می کند.
- stack trace (سلسله مراتب و پشته ی متدهای فراخوانی شده که خطا در آن رخ داده است) در خروجی چاپ می شود.
- برنامه را متوقف می کند.
اما اگر برنامه نویس خطا را با استفاده از ساختارهای دستوری فوق مدیریت کند، برنامه طبق انتظار به روند اجرای خود ادامه داده و باقی دستورات اجرا می شوند.