logo

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. 

k klaszterezési algoritmus

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:

hogyan lehet letiltani a fejlesztői módot
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 velethrows

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.

próbáld elkapni a java-t

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