Javassa poikkeuskäsittely on yksi tehokkaista tavoista käsitellä ajonaikaisia virheitä, jotta sovelluksen säännöllinen kulku voidaan säilyttää. Java Exception Handling on mekanismi, joka käsittelee ajonaikaisia virheitä, kuten ClassNotFoundException, IOException, SQLException, RemoteException jne.
Tässä artikkelissa opimme heittää ja heittää Javassa, joka pystyy käsittelemään poikkeuksia Javassa.
Java-heitto
Javassa heitto-avainsanaa käytetään nimenomaisesti heittämään poikkeus menetelmästä tai mistä tahansa koodilohkosta. Voimme heittää kumpaa tahansa valittu tai valitsematon poikkeus . Heitto-avainsanaa käytetään pääasiassa mukautettujen poikkeuksien heittämiseen.
Syntaksi Java-heitossa
throw Instance Example: throw new ArithmeticException('/ by zero');> Mutta tämä poikkeus esim. Ilmentymä on oltava tyyppiä Heitettävä tai alaluokka Heitettävä .
Esimerkiksi , Poikkeus on heitettävien poikkeuksien alaluokka, ja käyttäjän määrittämät poikkeukset laajentavat tyypillisesti poikkeusluokkaa . Toisin kuin C++, tietotyyppejä, kuten int, char, floats tai ei-heitettäviä luokkia, ei voida käyttää poikkeuksina.
Ohjelman suoritus pysähtyy heti, kun heittolause on suoritettu ja lähin sulkeva luku yrittää lohko tarkistetaan, onko siinä a ottaa kiinni lauseke, joka vastaa poikkeuksen tyyppiä. Jos se löytää osuman, control siirretään kyseiseen lauseeseen, muuten seuraavaan liitteenä yrittää lohko tarkistetaan ja niin edelleen. Jos ei vastaa ottaa kiinni löytyy, oletuspoikkeuskäsittelijä pysäyttää ohjelman.
Java-heitto esimerkkejä
Esimerkki 1:
Java
// Java program that demonstrates the use of throw> class> ThrowExcep {> >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.>
Esimerkki 2
Java
// Java program that demonstrates> // the use of throw> class> Test {> >public> static> void> main(String[] args)> >{> >System.out.println(>1> />0>);> >}> }> |
>
>
Lähtö
Exception in thread 'main' java.lang.ArithmeticException: / by zero>
Java-heittoja
throws on Java-avainsana, jota käytetään menetelmän allekirjoituksessa osoittamaan, että tämä menetelmä saattaa heittää jonkin luetelluista tyyppipoikkeuksista. Näihin menetelmiin kutsuvan on käsiteltävä poikkeus käyttämällä try-catch-estoa.
Java-heittojen syntaksi
type method_name(parameters) throws exception_list exception_list is a comma separated list of all the exceptions which a method might throw.>
Jos ohjelmassa on mahdollisuus nostaa poikkeus, kääntäjä aina varoittaa siitä ja pakollisesti meidän tulee käsitellä tämä tarkistettu poikkeus, muuten saamme käännösaikavirheen sanomalla ilmoittamaton poikkeus XXX on otettava kiinni tai julistettava heitetyksi . Tämän käännösaikavirheen estämiseksi voimme käsitellä poikkeuksen kahdella tavalla:
- Käyttämällä kokeile kiinni
- 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ä.
Java heittää esimerkkejä
Esimerkki 1
Java
cast string int java
// Java program to illustrate error in case> // of unhandled exception> class> tst {> >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
Java
// Java program to illustrate throws> class> tst {> >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 InterruptedException ja saamme tulosteen muodossa Hei Geeks
Esimerkki 3
Java
// Java program to demonstrate working of throws> class> ThrowsExecp {> >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.>
Tärkeitä asioita, jotka on muistettava heitoista Avainsana
- heittää-avainsana vaaditaan vain tarkistetuille poikkeuksille ja heitto-avainsanan käyttö tarkistamattomille poikkeuksille on merkityksetöntä.
- throws-avainsana vaaditaan vain kääntäjän vakuuttamiseksi, eikä throws-avainsanan käyttö estä ohjelman epänormaalia lopettamista.
- Heitto-avainsanan avulla voimme antaa menetelmän kutsujalle tietoa poikkeuksesta.