heittää ja heittää Javassa

Javassa poikkeuskäsittely on yksi tehokkaista tavoista käsitellä ajonaikaisia ​​virheitä, jotta sovelluksen säännöllinen kulku voidaan säilyttää. Se käsittelee ajonaikaiset virheet, kuten NullPointerException ArrayIndexOutOfBoundsException jne. Näiden virheiden tehokkaaseen käsittelyyn Java tarjoaa kaksi avainsanaa heittää ja heittää.

Java-heitto

Javassa heitto-avainsanaa käytetään nimenomaisesti heittämään poikkeus menetelmästä tai mistä tahansa koodilohkosta. Voimme heittää joko valitun tai valitsemattoman poikkeuksen. Heitto-avainsanaa käytetään pääasiassa mukautettujen poikkeuksien heittämiseen. 

Syntaksi:

heittää Esimerkki

Jos ilmentymä on Throwable-tyyppinen objekti (tai sen alaluokat, kuten Exception).

Esimerkki:

heittää uusi ArithmeticException('/ by zero');

Mutta tämän poikkeuksen eli ilmentymän on oltava tyyppiä Heitettävä tai alaluokka Heitettävä

Ohjelman suoritus pysähtyy heti, kun heittolause on suoritettu ja lähin sulkeva luku yrittää lohko tarkistetaan, onko siinä a saalis lauseke, joka vastaa poikkeuksen tyyppiä. Jos se löytää osuman, ohjattu siirretään kyseiseen lauseeseen, muuten seuraavaan liitteenä yrittää lohko tarkistetaan ja niin edelleen. Jos ei vastaa saalis löytyy, oletuspoikkeuskäsittelijä pysäyttää ohjelman. 

Esimerkki: Tämä esimerkki osoittaa, missä poikkeus heitetään kiinni ja heitetään uudelleen menetelmän sisällä.

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.'  );      }      }   }   

Lähtö
Caught inside fun(). Caught in main.  

Selitys: Yllä oleva esimerkki osoittaa heitto-avainsanan käytön NullPointerExceptionin heittämiseen. Poikkeus on kiinni sisällä hauskaa () -menetelmää ja heittää uudelleen, missä se sitten jää kiinni main()-menetelmään.

Esimerkki: Tämä esimerkki osoittaa aritmeettisen poikkeuksen.

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  );      }      }   }   

Lähtö:

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

Selitys: Yllä oleva esimerkki havainnollistaa heittoa käyttävän poikkeuksen, jossa aritmeettinen poikkeus heitetään eksplisiittisesti nollalla jakamisen vuoksi.

Java-heittoja

heittoja on Java-avainsana, jota käytetään menetelmän allekirjoituksessa osoittamaan, että tämä menetelmä saattaa aiheuttaa jonkin luetelluista tyyppipoikkeuksista. Näihin menetelmiin soittajan on käsiteltävä poikkeus käyttämällä try-catch-estoa. 

Syntaksi:

tyyppi metodin_nimi(parametrit) heittää poikkeusluettelon

jossa poikkeusluettelo on pilkuilla erotettu luettelo kaikista poikkeuksista, jotka menetelmä saattaa aiheuttaa.

Jos ohjelmassa on mahdollisuus herättää poikkeus, kääntäjä aina varoittaa siitä ja meidän on käsiteltävä se tarkistettu poikkeus. Muuten saamme käännösaikavirheen, jossa sanotaan, että ilmoittamaton poikkeus XXX on kiinni tai julistettava heitetyksi. Tämän käännösaikavirheen estämiseksi voimme käsitellä poikkeuksen kahdella tavalla: 

  1. Käyttämällä kokeile kiinni
  2. Käyttämällä heittoja avainsana

Voimme käyttää heitot-avainsanaa siirtääksemme vastuun poikkeusten käsittelystä soittajalle (Se voi olla menetelmä tai JVM), jolloin soittajan menetelmä on vastuussa poikkeuksen käsittelystä.  

Esimerkki 1: Käsittelemätön poikkeus

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

Lähtö:

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

Selitys: Yllä olevassa ohjelmassa saamme käännösaikavirheen, koska on olemassa poikkeuksen mahdollisuus, jos pääsäie menee nukkumaan, muut säikeet saavat mahdollisuuden suorittaa main()-menetelmän, joka aiheuttaa InterruptedExceptionin. 

Esimerkki 2: Käyttö throws käsitellä poikkeusta

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

Lähtö:

 Hello Geeks  

Selitys: Yllä olevassa ohjelmassa käsittelimme heitot-avainsanalla Keskeytetty poikkeus ja saamme lähdön muodossa Hei Geeks.

Esimerkki 3: Poikkeuksen heittäminen 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.'  );      }      }   }   

Lähtö
Inside fun(). Caught in main.  

Selitys: Yllä oleva esimerkki IllegalAccessExceptionin heittämisestä menetelmästä ja sen käsittelemisestä päämenetelmässä käyttämällä try-catch-lohkoa.

Ero heiton ja heiton välillä

Tärkeimmät erot heiton ja heittojen välillä Javassa ovat seuraavat:

heittää

heittoja

Sitä käytetään nimenomaisesti heittämään poikkeus.

Sitä käytetään ilmoittamaan, että menetelmä saattaa aiheuttaa yhden tai useamman poikkeuksen.

Sitä käytetään menetelmän tai koodilohkon sisällä.

Sitä käytetään menetelmän allekirjoituksessa.

Se voi heittää sekä valittuja että valitsemattomia poikkeuksia.

Sitä käytetään vain tarkistettuihin poikkeuksiin. Tarkistamattomat poikkeukset eivät vaadi heittoja

Metodi tai lohko heittää poikkeuksen.

Menetelmän kutsuja on vastuussa poikkeuksen käsittelystä.

Pysäyttää nykyisen suoritusvirran välittömästi.

Se pakottaa soittajan käsittelemään ilmoitetut poikkeukset.

heittää uusi ArithmeticException('Error');

public void myMethod() heittää IOExceptionin {}