bedobja és bedobja a Java-t

Java-ban a kivételkezelés az egyik hatékony eszköz a futásidejű hibák kezelésére, hogy az alkalmazás szabályos áramlását meg lehessen őrizni. Kezeli a futásidejű hibákat, például a NullPointerException ArrayIndexOutOfBoundsException stb. Ezeknek a hibáknak a hatékony kezeléséhez a Java két kulcsszót biztosít: dobás és dob.

Java dobás

A Java-ban a throw kulcsszót arra használják, hogy kifejezetten kivételt dobjanak ki egy metódusból vagy bármely kódblokkból. Dobhatunk bejelölt vagy nem ellenőrzött kivételt. A throw kulcsszót főként egyéni kivételek dobására használják. 

Szintaxis:

dobás Példa

Ahol a példány egy Throwable típusú objektum (vagy annak alosztályai, mint például az Exception).

Példa:

dob új ArithmeticException('/ nullával');

De ennek a kivételnek, azaz a példánynak típusnak kell lennie Dobható vagy annak egy alosztálya Dobható

A program végrehajtásának folyamata azonnal leáll a throw utasítás végrehajtása és a legközelebbi bezárás után megpróbál blokkot ellenőrzi, hogy van-e benne a fogás a kivétel típusának megfelelő utasítás. Ha egyezést talál, a vezérelt egyezés átkerül erre az utasításra, ellenkező esetben a következő befoglaló megpróbál blokk ellenőrzése és így tovább. Ha nincs egyezés fogás található, akkor az alapértelmezett kivételkezelő leállítja a programot. 

Példa: Ez a példa azt szemlélteti, hogy a kivételt hol lehet elkapni és visszadobni egy metóduson belül.

Java
   class   Geeks     {      static     void     fun  ()      {      try     {      throw     new     NullPointerException  (  'demo'  );      }      catch     (  NullPointerException     e  )     {      System  .  out  .  println  (  'Caught inside fun().'  );      throw     e  ;     // rethrowing the exception      }      }      public     static     void     main  (  String     args  []  )      {      try     {      fun  ();      }      catch     (  NullPointerException     e  )     {      System  .  out  .  println  (  'Caught in main.'  );      }      }   }   

Kimenet
Caught inside fun(). Caught in main.  

Magyarázat: A fenti példa bemutatja a throw kulcsszó használatát NullPointerException explicit dobására. A kivétel belül fogott móka () metódussal és visszadobja, ahol azután a main() metódus elkapja.

Példa: Ez a példa egy aritmetikai kivételt mutat be.

Java
   // Throwing an arithmetic exception   class   Geeks     {      public     static     void     main  (  String  []     args  ){      int     numerator     =     1  ;      int     denominator     =     0  ;      if     (  denominator     ==     0  )     {      // Manually throw an ArithmeticException      throw     new     ArithmeticException  (  'Cannot divide by zero'  );      }     else     {      System  .  out  .  println  (  numerator     /     denominator  );      }      }   }   

Kimenet:

 Hangup (SIGHUP)   
Exception in thread 'main' java.lang.ArithmeticException: Cannot divide by zero
at Geeks.main(Geeks.java:9)

Magyarázat: A fenti példa egy dobást használó kivételt mutat be, ahol az aritmetikai kivétel kifejezetten a nullával való osztás miatt kerül kidobásra.

Java dob

dobások egy kulcsszó a Java nyelvben, amelyet egy metódus aláírásában használnak annak jelzésére, hogy ez a metódus a felsorolt ​​típuskivételek valamelyikét dobhatja ki. A metódusok hívójának a kivételt try-catch blokk segítségével kell kezelnie. 

Szintaxis:

A method_name(parameters) típus kivétellistát dob

ahol a kivétellista egy vesszővel elválasztott lista az összes kivételről, amelyet a metódus dobhat.

Egy programban, ha van esély kivételt emelni, a fordító mindig figyelmeztet minket, és kezelnünk kell az ellenőrzött kivételt. Ellenkező esetben fordítási időbeli hibaüzenetet kapunk, miszerint a XXX be nem jelentett kivételt el kell fogni vagy dobottnak kell nyilvánítani. Ennek a fordítási időbeli hibának a megelőzése érdekében kétféleképpen kezelhetjük a kivételt: 

  1. A try catch használatával
  2. dobások kulcsszó

A throws kulcsszóval átruházhatjuk a kivételkezelés felelősségét a hívóra (ez lehet metódus vagy JVM), majd a hívó metódus felelős a kivétel kezeléséért.  

1. példa: Kezeletlen kivétel

Java
   class   Geeks     {      public     static     void     main  (  String  []     args  )      {      Thread  .  sleep  (  10000  );      System  .  out  .  println  (  'Hello Geeks'  );      }   }   

Kimenet:

 error: unreported exception InterruptedException; must be caught or declared to be thrown  

Magyarázat: A fenti programban fordítási idő hibát kapunk, mert fennáll a kivétel lehetősége, ha a fő szál aludni fog, más szálak megkapják az esélyt a main() metódus végrehajtására, amely InterruptedException-t okoz. 

2. példa: Használata throws hogy kezelje a kivételt

Java
   class   Geeks     {      public     static     void     main  (  String  []     args  )      throws     InterruptedException      {      Thread  .  sleep  (  10000  );      System  .  out  .  println  (  'Hello Geeks'  );      }   }   

Kimenet:

 Hello Geeks  

Magyarázat: A fenti programban a throws kulcsszó használatával kezeltük a MegszakítottKivétel és a kimenetet mint Sziasztok Geeks.

3. példa: Kivételt dobni vele throws

Java
   class   Geeks     {      static     void     fun  ()     throws     IllegalAccessException      {      System  .  out  .  println  (  'Inside fun(). '  );      throw     new     IllegalAccessException  (  'demo'  );      }      public     static     void     main  (  String     args  []  )      {      try     {      fun  ();      }      catch     (  IllegalAccessException     e  )     {      System  .  out  .  println  (  'Caught in main.'  );      }      }   }   

Kimenet
Inside fun(). Caught in main.  

Magyarázat: A fenti példa egy IllegalAccessException kivételt dob ​​egy metódusból, és kezeli azt a fő metódusban egy try-catch blokk segítségével.

Különbség a dobás és a dobás között

A Java dobás és dobás közötti fő különbségek a következők:

dobás

dobások

Arra használják, hogy kifejezetten kivételt adjanak.

Arra használják, hogy deklarálják, hogy egy metódus egy vagy több kivételt okozhat.

Metóduson vagy kódblokkon belül használják.

A metódus aláírásában használatos.

Ellenőrzött és ellenőrizetlen kivételeket is dobhat.

Csak ellenőrzött kivételeknél használatos. A nem ellenőrzött kivételekre nincs szükség dobások

A metódus vagy blokk kivételt dob.

A metódus hívója felelős a kivétel kezeléséért.

Azonnal leállítja az aktuális végrehajtási folyamatot.

Arra kényszeríti a hívót, hogy kezelje a deklarált kivételeket.

dob új ArithmeticException('Error');

public void myMethod() a(z) {} IOException kivételt dobja