Poikkeuskäsittely sisään Java
Mitä poikkeus sisältää Java?
Poikkeus sisään Java on tapahtuma, joka keskeyttää ohjelman käskyjen suorittamisen ja häiritsee ohjelman suorittamisen normaalia kulkua. Se on objekti, joka käärii menetelmän sisällä tapahtuneen virhetapahtuman tiedot ja välitetään ajonaikaiseen järjestelmään. sisään Java, poikkeuksia käytetään pääasiassa erityyppisten virheolosuhteiden osoittamiseen.
Virheitä on kahdenlaisia:
- Kokoa aikavirheet
- Ajonaikaiset virheet
Käännösaikavirheet voidaan jälleen luokitella kahteen tyyppiin:
- Syntaksivirheet
- Semanttiset virheet
Esimerkki syntaksivirheistä:
Ilmoittamisen sijaan int a;
ilmoitit sen virheellisesti in a;
jonka kääntäjä antaa virheen.
Esimerkki: Olet ilmoittanut muuttujan int a;
ja joidenkin koodirivien jälkeen ilmoitat jälleen kokonaisluvun muodossa int a;
. Kaikki nämä virheet korostetaan, kun käännät koodia.
Esimerkki ajonaikaisista virheistä
Ajonaikaista virhettä kutsutaan Poikkeukset virhe. Se on mikä tahansa tapahtuma, joka keskeyttää ohjelman normaalin suorituksen. Esimerkkejä poikkeuksista ovat aritmeettinen poikkeus, nollaosoittimen poikkeus, jako nollalla, jne. Poikkeukset Java ovat jotain, joka ei ole kehittäjien hallinnassa.
Napauta tätä jos video ei ole saatavilla
Miksi tarvitsemme poikkeusta?
Oletetaan, että olet koodannut ohjelman palvelimelle pääsyä varten. Asiat toimi hyvin, kun kehitit koodia.
Varsinaisen tuotantoajon aikana palvelin on poissa käytöstä. Kun ohjelmasi yritti käyttää sitä, syntyy poikkeus.
Kuinka käsitellä poikkeusta
Toistaiseksi olemme nähneet, että poikkeus ei ole kehittäjän hallinnassa. Mutta koodivirheen syyttäminen ympäristöasioista ei ole ratkaisu. Tarvitset vahvan ohjelmoinnin, joka huolehtii poikkeuksellisista tilanteista. Tällainen koodi tunnetaan nimellä Poikkeuskäsittelijä.
Esimerkissämme hyvä poikkeusten käsittely olisi, kun palvelin ei toimi, muodosta yhteys varapalvelimeen.
Tämän toteuttamiseksi syötä koodisi muodostaaksesi yhteyden palvelimeen (perinteisten if and else -ehtojen avulla). Tarkistat, onko palvelin kaatunut. Jos kyllä, kirjoita koodi yhteyden muodostamiseksi varmuuskopiopalvelimeen. Tällainen koodin järjestäminen käyttämällä "if"- ja "else"-silmukkaa ei ole tehokas, jos koodissasi on useita java poikkeuksia käsitellä.
class connect{ if(Server Up){ // code to connect to server } else{ // code to connect to BACKUP server } }
Kokeile Catch Blockia
Java tarjoaa sisäänrakennetun poikkeuksellisen käsittelyn.
- Normaali koodi menee a TRY lohko.
- Poikkeuskäsittelykoodi menee sisään CATCH lohko
Esimerkissämme TRY-lohko sisältää koodin yhteyden muodostamiseksi palvelimeen. CATCH-lohko sisältää koodin yhteyden muodostamiseksi varapalvelimeen. Jos palvelin on päällä, CATCH-lohkon koodi ohitetaan. Jos palvelin ei toimi, poikkeus tehdään ja catch-lohkossa oleva koodi suoritetaan.
Näin poikkeusta siis käsitellään Java.
Syntaksi try & catch -käytölle
try{ statement(s) } catch (exceptiontype name){ statement(s) }
esimerkki
Vaihe 1) Kopioi seuraava koodi editoriin
class JavaException { public static void main(String args[]){ int d = 0; int n = 20; int fraction = n/d; System.out.println("End Of Main"); } }
Vaihe 2) Tallenna tiedosto ja käännä koodi. Suorita ohjelma komennolla java JavaPoikkeus
Vaihe 3) Aritmeettinen poikkeus – jakaminen nollalla näytetään alla riville #5 ja riviä #6 ei koskaan suoriteta
Vaihe 4) Katsotaan nyt, kuinka try and catch auttaa meitä käsittelemään tätä poikkeusta. Laitamme koodirivin aiheuttavan poikkeuksen a-kohtaan yrittää lohko, jota seuraa a saalis lohko. Kopioi seuraava koodi editoriin.
class JavaException { public static void main(String args[]) { int d = 0; int n = 20; try { int fraction = n / d; System.out.println("This line will not be Executed"); } catch (ArithmeticException e) { System.out.println("In the catch Block due to Exception = " + e); } System.out.println("End Of Main"); } }
Vaihe 5) Tallenna, käännä ja suorita koodi. Saat seuraavan tulosteen
Kuten huomaat, poikkeus käsitellään, ja myös viimeinen koodirivi suoritetaan. Huomaa myös, että riviä 7 ei suoriteta, koska heti, kun poikkeus nostetaan, ohjausvirta hyppää kiinnipitolohkoon.
Huomautus: AritmeticException-objekti "e" sisältää tapahtuneesta poikkeuksesta tietoa, josta voi olla hyötyä palautustoimenpiteissä.
Java Poikkeusluokkahierarkia
Kun yksi catch-käsky on suoritettu, muut ohitetaan ja suoritus jatkuu try/catch-lohkon jälkeen. Sisäkkäiset catch-lohkot noudattavat poikkeushierarkiaa.
- Kaikki poikkeusluokat mukana Java laajentaa luokkaa "Heitettävä". Throwablella on kaksi alaluokkaa, Error ja Exception
- Error-luokka määrittelee poikkeuksen tai ongelmat, joita ohjelmamme ei odota normaaleissa olosuhteissa tapahtuvan, esimerkiksi muistivirhe, laitteistovirhe, JVM-virhe jne.
- Exception-luokka edustaa poikkeuksia, joita ohjelmamme voi käsitellä, ja ohjelmamme voidaan palauttaa tästä poikkeuksesta käyttämällä try and catch -lohkoa
- Ajonaikainen poikkeus on poikkeusluokan alaluokka. Tämän tyyppinen poikkeus edustaa poikkeuksia, jotka tapahtuvat ajon aikana ja joita ei voida seurata käännöshetkellä. Erinomainen esimerkki samasta on jako nollalla poikkeuksella tai nollaosoittimen poikkeus jne
- IO-poikkeus syntyy syöttö- ja lähtötoimintojen aikana
- Keskeytetyt poikkeukset Java, syntyy usean ketjutuksen aikana.
Esimerkiksi: Ymmärtää try and catch -lohkojen sisäkkäisyyden
Vaihe 1) Kopioi seuraava koodi editoriin.
class JavaException { public static void main(String args[]) { try { int d = 1; int n = 20; int fraction = n / d; int g[] = { 1 }; g[20] = 100; } /*catch(Exception e){ System.out.println("In the catch block due to Exception = "+e); }*/ catch (ArithmeticException e) { System.out.println("In the catch block due to Exception = " + e); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("In the catch block due to Exception = " + e); } System.out.println("End Of Main"); } }
Vaihe 2) Tallenna tiedosto ja käännä koodi. Suorita ohjelma komennolla, Jaava JavaPoikkeus.
Vaihe 3) ArrayIndexOutOfBoundsException luodaan. Muuta int d:n arvoksi 0. Tallenna, käännä ja suorita koodi.
Vaihe 4) Aritmeettinen poikkeus on luotava.
Vaihe 5) Poista kommentit riviltä 10 riville 12. Tallenna, käännä ja suorita koodi.
Vaihe 6) Kokoonpanovirhe? Tämä johtuu siitä, että poikkeus on Aritmeettisen poikkeuksen poikkeuksen perusluokka. Kaikki ArithmeticExceptionin herättämät poikkeukset voidaan käsitellä myös Exception-luokassa. Joten AritmeticExceptionin kiinnityslohko ei koskaan saa mahdollisuutta suorittaa, mikä tekee siitä tarpeettoman. Tästä johtuen käännösvirhe.
Java Lopuksi Block
Lopulta lohko on toteutetaan poikkeuksesta huolimatta kokeilulohkossa. se on valinnainen käytettäväksi try-lohkon kanssa.
try { statement(s) } catch (ExceptiontType name) { statement(s) } finally { statement(s) }
Jos try-lohkossa esitetään poikkeus, lopuksi lohko suoritetaan sen jälkeen, kun catch-lohko on suoritettu.
esimerkki
Vaihe 1) Kopioi seuraava koodi editoriin.
class JavaException { public static void main(String args[]){ try{ int d = 0; int n =20; int fraction = n/d; } catch(ArithmeticException e){ System.out.println("In the catch block due to Exception = "+e); } finally{ System.out.println("Inside the finally block"); } } }
Vaihe 2) Tallenna, käännä ja suorita koodi.
Vaihe 3) Odotettu tulos. Lopulta lohko suoritetaan, vaikka poikkeus nostetaan esiin.
Vaihe 4) Muuta muuttujan d = 1 arvoa. Tallenna, käännä ja suorita koodi ja tarkkaile tulosta. Lomakkeen alaosa
Yhteenveto
- An Poikkeus on ajonaikainen virhe joka katkaisee ohjelman suorituksen normaalin kulun. Ohjelman suorittamisen aikaista häiriötä kutsutaan virheeksi tai poikkeukseksi.
- Virheet luokitellaan kahteen luokkaan
- Käännösaikavirheet – syntaksivirheet, semanttiset virheet
- Ajonaikaiset virheet - Poikkeus
- A vankan ohjelman tulee käsitellä kaikki poikkeukset ja jatkaa sen normaalia ohjelman suorittamista. Java tarjoaa sisäänrakennetun poikkeuksellisen käsittelytavan
- Exception Handler on joukko koodia, joka hoitaa poikkeuksen. Poikkeukset voidaan käsitellä Java käyttämällä try & catch -toimintoa.
- Kokeile estää: Normaali koodi menee tähän lohkoon.
- Saalislohko: Jos normaalissa koodissa on virhe, se menee tähän lohkoon