در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش جاوا (Java) قسمت 30 : معرفی و شرح Exception ها قسمت 2

با سلام به همه دوستان و همراهان عزیز Itpro. در مطلب قبلی به مفاهیم exception ها و معرفی آنها پرداختیم. ولی نحوه مدیریت آنها و نحوه برخورد با هرکدام را توضیح ندادیم. در این مطلب قصد داریم که مبحث Exception ها را بیشتر پیش ببریم و با این مبحث ازبرنامه نویسی جاوا بیشتر آشنا شویم.

متدهای exception ها

گفتیم که همه ی Exception ها از کلاس Throwable مشتق شده اند و متدهای زیر متدهای کلاس Throwable می باشد که در همه ی exception ها وجود دارد.

  • متد getMessage این متد پیامی را در مورد exception رخ داده شده را در قالب String برمی گرداند این پیام در constructor کلاس Throwable قرار داده شده است.
  • متد getCause این متد دلیل رخ دادن exception به وجود آمده را در قالب یک شئ Throwable بر می گرداند.
  • متد printStackTrace این متد نه ورودی دارد و نه مقدار بازگشتی دارد. وظیفه این متد این است که سلسله مراتب کلاس ها و محل هایی از کلاس ها که exception در آنها رخ داده است را به ترتیب در خروجی چاپ می کند و می توان با استفاده از اطلاعات این متد فهمید که خطا و exception در چه محلی رخ داده است.
  • متد getStackTrace متد قبلی سلسله مراتب محل خطاها را چاپ می کرد حال اگر بخواهیم این اطلاعات را در یک آرایه داشته باشیم که بتوانیم بر روی آنها اعمال مختلفی انجام دهیم از این متد استفاده می کنیم. این متد همه ی اطلاعات stack trace را در یک آرایه از اشیاء StackTraceElement قرار می دهد و این آرایه را برمی گرداند.
  • متد fillInStackTrace این متد ورودی ندارد و شئ جاری را با stackTrace جاری پر می کند.

مدیریت exception ها (به دام انداختن)

برای این که بتوانیم در هنگام وقوع یک exception آن را تشخیص داده و عمل خاصی را انجام دهیم از کلمات کلیدی try, catch استفاده می کنیم. Try, catch اسم بلوک های کد است که برای مدیریت exception ها به کار می رود. کدهایی را که ممکن است exception تولید کنند را داخل بلوک try قرار می دهیم و عمل مربوط به هرکدام از exception ها را داخل بلوک های catch می نویسیم. نحوه نوشتن و استفاده از این بلوک ها در برنامه جاوا به شکل زیر خواهد بود:

try
{
   //Protected code
}catch(ExceptionName e1)
{
   //Catch block
}

به کدی که داخل بلوک try قرار می گیرد کد محافظت شده می گویند. دقت داشته باشید که بلوک های catch باید بلافاصله بعد از بلوک try قرار بگیرند. بعد از هر بلوک try هم باید بلوک های catch ویا بلوک finally بیاید. بلوک های catch برای درگیر شدن با exception ها به کار می روند. اصولا هر بلوک catch برای مدیریت یک Exception به کار می رود. وقتی که در داخل کدهای بلوک try خطایی رخ دهد بلوک catch مربوط به آن بلوک اجرا خواهد شد. در کد زیر مثالی از مدیریت exception ها را با استفاده از بلوک های try, catch آورده ایم. در این مثال ما یک آرایه 2 خانه ای تعریف کرده ایم ولی در داخل برنامه قصد داریم که به خانه سوم آن دسترسی داشته باشیم که برنامه exception تولید می کند و ما آن exception را مدیریت می کنیم.

import java.io.*;
public class ExcepTest{

   public static void main(String args[]){
      try{
         int a[] = new int[2];
         System.out.println("Access element three :" + a[3]);
      }catch(ArrayIndexOutOfBoundsException e){
         System.out.println("Exception thrown  :" + e);
      }
      System.out.println("Out of the block");
   }
}

خروجی برنامه بالا متن زیر خواهد بود:

Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 3
Out of the block

استفاده از چندین بلوک catch

یک بلوک try می تواند چندین بلوک Catch را به دنبال داشته باشد. سینتکس نوشتاری چندین بلوک catch به شکل زیر خواهد بود:

try
{
   //Protected code
}catch(ExceptionType1 e1)
{
   //Catch block
}catch(ExceptionType2 e2)
{
   //Catch block
}catch(ExceptionType3 e3)
{
   //Catch block
}

در کد بالا 3 بلوک catch وجود دارد که هرکدام از آنها برای یک Exception خاص است. شما به هر تعداد که بخواهید می توانید بلوک catch بعد از یک بلوک try داشته باشید. زمانی که در کد داخل بلوک catch یک exception رخ دهد برنامه به دنبال اولین بلوک catch می رود. اگر نوع exception مشخص شده دراین بلوک Catch با نوع exception رخ داده یکی بود کد های داخل بلوک اجرا خواهند شد. در غیر این صورت به دنبال بلوک catch دوم خواهد رفت و در صورت عدم تطبیق نوع exception ها به سراغ exception بعدی خواهد رفت. این عمل به همین ترتیب انجام خواهد شد تا بلوک مورد نظر پیدا شود. در صورتی که بلوک Catch مورد نظر پیدا نشد خطایی صادر خواهد شد و اجرای برنامه متوقف خواهد شد. برای مثال به کد زیر دقت کنید

try
{
   file = new FileInputStream(fileName);
   x = (byte) file.read();
}catch(IOException i)
{
   i.printStackTrace();
   return -1;
}catch(FileNotFoundException f) //Not valid!
{
   f.printStackTrace();
   return -1;
}

مدیریت همزمان بیش از یک exception

از نسخه 7 جاوا به بعد این امکان به وجود آمده است که به عنوان ورودی یک بلوک Catch بتوان چند exception را فرستاد و هرکدام از exception ها را با استفاده از | جدا نمود. برای مثال به کد زیر دقت کنید:

catch (IOException|FileNotFoundException ex) {
   logger.log(ex);
   throw ex;

کلمات کلیدی throw, throws


اگر داخل متدی از کدهایی استفاده کردیم که امکان رخ دادن exception چک شده داشته باشد و آن را داخل try, catch قرار ندهیم باید از کلمه کلیدی throws استفاده کنیم. این کلمه کلیدی هنگام تعریف تابع و در خط اول قرار می گیرد. اما کاربرد کلمه کلیدی throw به طور کامل با throwsتفاوت دارد. این کلمه کلیدی برای زمانی است که بخواهیم به طور دستی یک exception را بسازیم و با استفاده از throw می توان کاری کرد که یک exception رخ دهد. به عبارت دیگر کلمه کلیدی throws برای این است که نوشتن try, catch را به عقب بیندازیم ولی کلمه throw برای ساختن یک exception به طور دستی است. یک مثال از کلمه کلیدی throwsو throw برای RemoteException در کد زیر آورده ایم.

import java.io.*;
public class className
{
   public void deposit(double amount) throws RemoteException
   {
      // Method implementation
      throw new RemoteException();
   }
   //Remainder of class definition
}

متدی که می سازیم ممکن است که چندین exception را تولید کند که می توان هنگام تعریف آن در جلوی کلمه کلیدی throws این exception ها را به ترتیب آورد. برای مثال به کد زیر دقت کنید که دو exception را در جلوی throws آورده است.

import java.io.*;
public class className
{
   public void withdraw(double amount) throws RemoteException,
                              InsufficientFundsException
   {
       // Method implementation
   }
   //Remainder of class definition
}

تا به این قسمت از مطالب به معرفی و نحوه مدیریت exception ها در جاوا پرداختیم. در قسمت بعدی مطالب بیشتری در مورد Exception ها خواهیم گفت Itpro باشید

نویسنده: مهدی عادلی فر

منبع: جزیره برنامه نویسی و توسعه نرم افزار وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.

#برنامه_نویسی_جاوا #آموزش_برنامه_نویسی_جاوا #انواع_exception_ها_در_جاوا #مدیریت_خطاها_در_جاوا #آموزش_جاوا #مدیریت_استثنا_ها_در_جاوا #کلمات_throw,_throws_در_جاوا #try/catch_در_جاوا #پردازش_استثناها_در_جاوا #دوره_آموزشی_جاوا
عنوان
1 آموزش جاوا (Java) قسمت 1 : معرفی ، خصوصیات و شروع به کار رایگان
2 آموزش جاوا (Java) قسمت 2 : شی گرایی قسمت یک رایگان
3 آموزش جاوا (Java) قسمت 3: شی گرایی قسمت دو رایگان
4 آموزش جاوا (Java) قسمت 4 : شی گرایی قسمت سه رایگان
5 آموزش جاوا (Java) قسمت 5 : انواع داده رایگان
6 آموزش جاوا (Java) قسمت 6 : انواع متغیر رایگان
7 آموزش جاوا (Java) قسمت 7 : Modifier ها رایگان
8 آموزش جاوا (Java) قسمت 8 : عملگرها قسمت یک رایگان
9 آموزش جاوا (Java) قسمت 9 : عملگرها قسمت دو رایگان
10 آموزش جاوا (Java) قسمت 10 : حلقه های تکرار رایگان
11 آموزش جاوا (Java) قسمت 11 : عبارات شرطی رایگان
12 آموزش جاوا (Java) قسمت 12 : کلاس Wrapper اعداد رایگان
13 آموزش جاوا (Java) قسمت 12 : کلاس Wrapper اعداد رایگان
14 آموزش جاوا (Java) قسمت 14: کلاس Wrapper کاراکترها رایگان
15 آموزش جاوا (Java) قسمت 15 : کلاس String و کار با رشته قسمت یک رایگان
16 آموزش جاوا (Java) قسمت 16 : کلاس String و کار با رشته قسمت دو رایگان
17 آموزش جاوا (Java) قسمت 17 : کلاس String و کار با رشته قسمت سه رایگان
18 آموزش جاوا (Java) قسمت 18 : کلاس String و کار با رشته قسمت چهار رایگان
19 آموزش جاوا (Java) قسمت 19 : StringBuilder و StringBuffer رایگان
20 آموزش جاوا (Java) قسمت 20 : استفاده از آرایه ها رایگان
21 آموزش جاوا (Java) قسمت 21 : آموزش کار با تاریخ رایگان
22 آموزش جاوا (Java) قسمت 22 : عبارات منظم (Regular Expression) رایگان
23 آموزش جاوا (Java) قسمت 23 : تعریف و استفاده از متدها قسمت یک رایگان
24 آموزش جاوا (Java) قسمت 24 : تعریف و استفاده از متدها قسمت دو رایگان
25 آموزش جاوا (Java) قسمت 25 : کار با استریم ها و فایل ها رایگان
26 آموزش جاوا (Java) قسمت 26 : کار با دایرکتوری ها رایگان
27 آموزش جاوا (Java) قسمت 27 : کلاس ByteArrayInputStream رایگان
28 آموزش جاوا (Java) قسمت 28 : معرفی کلاس File و متدها رایگان
29 آموزش جاوا (Java) قسمت 29 : معرفی و شرح Exception ها قسمت 1 رایگان
30 آموزش جاوا (Java) قسمت 30 : معرفی و شرح Exception ها قسمت 2 رایگان
31 آموزش جاوا (Java) قسمت 31 : معرفی و شرح Exception ها قسمت 3 رایگان
32 آموزش جاوا (Java) قسمت 32 : استفاده از انوع کلاس های داخلی رایگان
33 آموزش جاوا (Java) قسمت 33 : وراثت کلاس ها و انواع آن رایگان
34 آموزش جاوا (Java) قسمت 34 : Override کردن متد ها رایگان
35 آموزش جاوا (Java) قسمت 35 : چند ریختی (Polymorphism) رایگان
36 آموزش جاوا (Java) قسمت 36 : Enum و ویژگی های آن رایگان
37 آموزش جاوا (Java) قسمت 37 : معرفی Abstract رایگان
38 آموزش جاوا (Java) قسمت 38 : استفاده از کپسول بندی (Encapsulation) رایگان
39 آموزش جاوا (Java) قسمت 39 : استفاده از اینترفیس ها رایگان
40 آموزش جاوا (Java) قسمت 40 : پکیج(Package) و نحوه استفاده رایگان
41 آموزش جاوا (Java) قسمت 41 : معرفی داده ساختارها Enumeration رایگان
42 آموزش جاوا (Java) قسمت 42 : داده ساختار BitSet رایگان
43 آموزش جاوا (Java) قسمت 43 : داده ساختار Vector رایگان
44 آموزش جاوا (Java) قسمت 44 : داده ساختار Stack (پشته) رایگان
45 آموزش جاوا (Java) قسمت 45 : داده ساختار Dictionary رایگان
46 آموزش جاوا (Java) قسمت 46 : داده ساختار Hashtable رایگان
47 آموزش جاوا (Java) قسمت 47 : داده ساختار Properites رایگان
48 آموزش جاوا (Java) قسمت 48 : معرفی و آموزش جنریک (Generic) رایگان
49 آموزش جاوا (Java) قسمت 49 : برنامه نویسی سوکت و شبکه قسمت 1 رایگان
50 آموزش جاوا (Java) قسمت 50 : برنامه نویسی سوکت و شبکه قسمت 2 رایگان
51 آموزش جاوا (Java) قسمت 51 : استفاده از Lambda Expression رایگان
52 آموزش جاوا (Java) قسمت 52 : Thread و Multi-Threading رایگان
53 آموزش جاوا (Java) قسمت 53 : Runnable در Thread و Multi-Threading رایگان
54 آموزش جاوا (Java) قسمت 54 : کلاس Thread و متدها رایگان
زمان و قیمت کل 0″ 0
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....