رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

در جاوا، ما کلاسهای استثنائی را مانند کلاس ArithmeticException، ArrayIndexOutOfBoundsException، NullPointerException و غیره تعریف کرده ایم. شرایط خاصی برای این استثنائات تعریف شده و در شرایطی که آنها به طور ضمنی توسط JVM (ماشین مجازی جاوا) استفاده می شوند وجود دارد.

آیا می دانید که یک برنامه نویس می تواند یک استثنا جدید ایجاد کند و آن را به صراحت پرتاب کند؟ این استثنا ها به عنوان استثنائات تعیین شده توسط کاربر شناخته می شوند. به منظور استثنائات تعریف شده توسط کاربر، پرتاب کلمه کلیدی مورد استفاده قرار می گیرد. در این آموزش، ما خواهیم دید که چگونه یک استثناء جدید ایجاد کنیم و آن را در یک برنامه با استفاده از کلمه کلیدی پرتاب کنیم.

شما همچنین می توانید یک استثناء قبلا تعریف شده ای مانند ArithmeticException، IOException و غیره استفاده کنید.

//A void method
public void sample()
{
   //Statements
   //if (somethingWrong) then
   IOException e = new IOException();
   throw e;
   //More Statements
 }

صدا زدن متد نمونه بالا باید همیشه در یک بلوک امتحان قرار داده شود زیرا یک استثناء چک شده را پرتاب می کند - IOException. به کد زیر دقت کنید:

MyClass obj =  new MyClass();
try{
      obj.sample();
}catch(IOException ioe)
 {
      //Your error Message here
      System.out.println(ioe);
  }

استثنا در جاوا، اجباری از نوع Throwable است. اگر شما سعی می کنید که یک شی را پرتاب کنید، کامپایلر از کامپایل کردن برنامه خود اجتناب می کند و یک خطای کامپایل را نشان می دهد.

هر گاه برنامه با یک دستور استثنا مواجه شود، مراحل بعدی اجرا نمی شود. کنترل بلافاصله برای گرفتن بلوک منتقل می شود تا ببینید آیا استثنائت پرتاب شده وجود دارد یا خیر. اگر استثنائی در آن وجود نداشته باشد، بلوک بلوک بعدی برای استثناء بررسی می شود و غیره. اگر هیچ کدام از بلوک های تکرار نشود، استثنائا پرتاب شده است، اما یک پیام استثنایی تولید شده بر روی سیستم روی صفحه نمایش داده می شود، همان چیزی است که ما برای استثنائات غیر دستی مدیریت می کنیم.

 

class ThrowDemo{
   public static void main(String args[]){
      try{
	   char array[] = {'a','b','g','j'};
	   /*I'm displaying the value which does not
	    * exist so this should throw an exception
	    */
	   System.out.println(array[78]);
      }catch(ArithmeticException e){
	    System.out.println("Arithmetic Exception!!");
       }
   }
}

 

Output:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 
78 at beginnersbook.com.ThrowDemo.main(Details.java:9)

 

از آنجا که استثنای پرتاب شده در بلوک های گیرنده مورد استفاده قرار نگرفت، سیستم تولید شده پیام استثنایی برای این استثنا خاص نمایش داده شد.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • مطالب مشابه

    • توسط mahyar130
      درود دوستان - کد جاوا تاریخ شمسی رو برای اندروید استودیو میخواستم . به صورتی که تاریخ روز بالا برام زده بشه و سمت راست فلش دیروز و سمت چپ فردا بخوره و به دیروز و فردا لینک بشه . لطفا کمکم کنید 
       
    • توسط AliMirzaei
      سلام
      من موقع ران کردن کد در ecilpse با اروری مواجه شدم! ممنون میشم مشکل من را حل کنید!
      مشکل در تصاویر زیر آمده است!
      مدل سیستم+نسخه JDK ,JRE + نسخه ecilpse در تصاویر آمده!
       
       
       





    • توسط Omid Zakeri
      کلاس Java FileInputStream بایت ورودی را از یک فایل دریافت می کند. این برای خواندن داده های بایت گرا (جریان های بایت خام) مانند داده های تصویری، صوتی، تصویری و غیره استفاده می شود.
      به مثال زیر توجه کنید:
      public class FileInputStream extends InputStream public class DataStreamExample { public static void main(String args[]){ try{ FileInputStream fin=new FileInputStream("D:\\testout.txt"); int i=fin.read(); System.out.print((char)i); fin.close(); }catch(Exception e){System.out.println(e);} } } توجه: قبل از اجرای کد، یک فایل متنی به نام "testout.txt" لازم است که ایجاد شود. در این فایل ما محتوای زیر را داریم:
      Welcome to javatpoint. اما خروجی کد بالا:
      Output: W خب برای خواندن همه ی کاراکترها میتوان از دستور do-while استفاده کرد :
      import java.io.FileInputStream; public class DataStreamExample { public static void main(String args[]){ try{ FileInputStream fin=new FileInputStream("D:\\testout.txt"); int i=0; while((i=fin.read())!=-1){ System.out.print((char)i); } fin.close(); }catch(Exception e){System.out.println(e);} } } Output: Welcome to javaTpoint  
    • توسط Omid Zakeri
      در این مثال ما نشان خواهیم داد که چگونه از  استثنائی try-catch استفاده کنیم. استثنا یک خطا است که ممکن است در طی اجرای یک برنامه اتفاق بیفتد و نشان می دهد که جریان طبیعی برنامه باید قطع شود.
      NullPointerException، IOException، ArithmeticException، ArrayIndexOutOfBoundsException، بعضی از موارد دیگر استثنائی است که معمولا دیده می شود. این استثنا ها می توانند توسط برخی از بلوک های کد مورد استفاده قرار گیرند که توسط اظهارات try-catch احاطه شده اند. این بلوک کد، handler استثناء نامیده می شود. همچنین، دستیار استثنا ممکن است به صورت اختیاری شامل بلوک نهایی باشد.
      مثلا کد زیر دارای خطای تقسیم بر صفر است:
      public class Testtrycatch1{ public static void main(String args[]){ int data=50/0;//may throw exception System.out.println("rest of the code..."); } } Output:
      Exception in thread main java.lang.ArithmeticException:/ by zero همانطور که در مثال بالا نشان داده شده است، بقیه کد اجرا نمی شود (در این حالت، بقیه دستور کد ... چاپ نمی شود).
      بیایید راه حل مشکل بالا را با بلوک 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..."); } }  
      Output:
      Exception in thread main java.lang.ArithmeticException:/ by zero ...rest of the code  
      حالا، همانطور که در مثال بالا نشان داده شده است، بقیه کد اجرا می شود یعنی بقیه دستور کد ... چاپ می شود.
       

  • فایل

×
×
  • اضافه کردن...