logo

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. 

java menetelmiä

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:

verrata javan merkkijonoihin

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äminenthrows

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

arraylist

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 {}