Omid Zakeri

throw exception در جاوا

1 ارسال در این موضوع قرار دارد

در جاوا، ما کلاسهای استثنائی را مانند کلاس 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)

 

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

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط 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  
      حالا، همانطور که در مثال بالا نشان داده شده است، بقیه کد اجرا می شود یعنی بقیه دستور کد ... چاپ می شود.
       


  • دوره آموزشی اندروید ایران کانادا آموزش ویدئویی اندروید آموزش برنامه نویسی اندروید اندروید کاپ دوره آنلاین اندروید کتاب های آموزشی اندروید بسته آموزشی اندروید دوره برنامه نویسی اندروید آموزش Kotlin
  • فایل