Poikkeuskäsittely sisään Java

⚡ Älykäs yhteenveto

Java Poikkeusten käsittely tarjoaa jäsennellyn mekanismin normaalia ohjelmavirtaa häiritsevien ajonaikaisten virheiden hallintaan. Se käyttää try-, catch-, finally-, throw- ja throws-avainsanoja poikkeuksellisten olosuhteiden havaitsemiseen, eristämiseen ja niistä palautumiseen samalla kun se pitääping sovellukset ovat kestäviä ja ennustettavia.

  • ⚠️ Poikkeus määritelty: Poikkeus on ajonaikainen tapahtuma, joka keskeyttää normaalin suoritusjärjestyksen ja esitetään virhetilan kuvaavana objektina.
  • 🧯 Kokeile Catch Blockia: Kääri riskialtis koodi try-lohkon sisään ja lisää sen jälkeen yksi tai useampi catch-lohko tallentaaksesi tiettyjä poikkeustyyppejä sujuvasti.
  • 🔁 Lopuksi käytös: finally-lohko suoritetaan aina try- ja catch-komentojen jälkeen, joten se on ihanteellinen tiedostojen ja sokettien sulkemiseen tai muiden järjestelmäresurssien vapauttamiseen.
  • Poikkeushierarkia: Kaikki poikkeukset perivät Throwable-luokasta, joka haarautuu Error- ja Exception-luokkiin. RuntimeException kattaa tarkistamattomat tapaukset, kuten jaon nollalla.
  • 🧪 Parhaat käytännöt: Pysäytä ensin tarkin poikkeus, vältä tyhjiä catch-lohkoja, kirjaa merkityksellisiä viestejä ja käytä multicatch-toimintoa pitääksesi koodin ytimekkäänä ja ylläpidettävänä.

Poikkeuskäsittely sisään Java

Mikä on poikkeus kohdassa Java?

An Poikkeus sisään Java on tapahtuma, joka keskeyttää ohjelmakäskyjen suorittamisen ja häiritsee ohjelman normaalia suorituskulkua. Se on objekti, joka käärii metodin sisällä tapahtuneen virhetapahtuman tiedot ja välittää ne ajonaikaiselle järjestelmälle. Javapoikkeuksia käytetään pääasiassa erityyppisten virhetilanteiden signalointiin, jotta kehittäjät voivat reagoida niihin hallitusti.

Virheitä on kaksi laajaa luokkaa Java:

  1. Kokoa aikavirheet
  2. Ajonaikaiset virheet

Käännösaikaiset virheet voidaan luokitella kahteen muuhun tyyppiin:

  • Syntaksivirheet
  • Semanttiset virheet

Esimerkki syntaksivirheistä:

Ilmoittamisen sijaan int a; ilmoitit sen virheellisesti in a;, jolloin kääntäjä heittää virheen.

Semanttisten virheiden esimerkki: Olet määritellyt 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ä

Suorituksenaikaista virhettä kutsutaan PoikkeusSe on mikä tahansa tapahtuma, joka keskeyttää ohjelman normaalin suorituksen. Esimerkkejä poikkeuksista ovat aritmeettinen poikkeus, NullPointerException, jakamalla nollalla -poikkeus ja monet muut. Poikkeukset Java ovat olosuhteita, jotka ovat usein kehittäjän suoran kontrollin ulkopuolella.

Napauta täältä jos video ei ole saatavilla

Miksi tarvitsemme poikkeusten käsittelyä?

Oletetaan, että olet koodannut ohjelman palvelimelle pääsyä varten. Asiat toimivat hyvin kehitysvaiheessa.ping koodi paikallisessa ympäristössä kontrolloiduissa olosuhteissa.

Java poikkeus Käsittely

Todellisen tuotantokäytön aikana palvelin saattaa olla poissa käytöstä. Kun ohjelmasi yrittää käyttää sitä, syntyy poikkeus, ja ilman asianmukaista käsittelyä ohjelma päättyy äkillisesti.

Java poikkeus Käsittely

Kuinka käsitellä poikkeus Java

Tähän mennessä olemme nähneet, että poikkeus on usein kehittäjän hallinnan ulkopuolella. Koodivirheen syyttäminen ympäristöongelmista ei kuitenkaan ole todellinen ratkaisu. Tarvitset vankan ohjelmoinnin, joka hoitaa poikkeukselliset tilanteet. Tällainen koodi tunnetaan nimellä Poikkeusten käsittelijä.

Esimerkissämme hyvä poikkeusten käsittely tarkoittaisi sitä, että kun ensisijainen palvelin on poissa käytöstä, ohjelma muodostaa automaattisesti yhteyden varapalvelimeen.

Java poikkeus Käsittely

Tämän toteuttamiseksi voisit kirjoittaa koodia, joka muodostaa yhteyden palvelimeen perinteisten if- ja else-ehtojen avulla. Tarkistat, onko palvelin alhaalla, ja jos on, kirjoitat koodia, joka muodostaa yhteyden varapalvelimeen. Tällainen koodin organisointi "if"- ja "else"-haarojen avulla ei ole tehokasta, jos koodissasi on useita... Java poikkeukset käsitellä.

class connect{
	if(Server Up){
	 // code to connect to server
	}
	else{
	 // code to connect to BACKUP server
	}
}

Kokeile Catch Blockia Java

Java tarjoaa sisäänrakennetun poikkeusten käsittelymekanismin, joka erottaa normaalin logiikan virheiden palautuslogiikasta.

  1. Normaali koodi menee a TRY lohko.
  2. Poikkeuskäsittelykoodi menee sisään CATCH lohko.

Kokeile Catch Blockia

Esimerkissämme TRY-lohko sisältää koodin palvelimeen yhteyden muodostamiseksi. CATCH-lohko sisältää koodin varapalvelimeen yhteyden muodostamiseksi. Jos palvelin on toiminnassa, CATCH-lohkon koodi ohitetaan. Jos palvelin on alhaalla, syntyy poikkeus ja catch-lohkon koodi suoritetaan.

Kokeile Catch Blockia

Eli näin poikkeus käsitellään Java.

Syntaksi try- ja catch-komennoille

try{
    statement(s)
}
catch (exceptiontype name){
	statement(s)
}

Esimerkki Try Catch -lohkosta

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) Rivillä 5 näytetään aritmeettinen poikkeus, jakaminen nollalla, ja riviä 6 ei koskaan suoriteta.

Vaihe 4) Tarkastellaan nyt, miten try ja catch auttavat meitä käsittelemään tätä poikkeusta. Sijoitamme poikkeuksen aiheuttavan koodirivin 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.

Kokeile Catch Blockia

Kuten huomaat, poikkeus käsitellään ja viimeinen koodirivi suoritetaan myös. Huomaa myös, että riviä 7 ei suoriteta, koska heti, kun poikkeus nostetaan, ohjausvirta hyppää kiinnipitolohkoon.

Huomautus: ArithmeticException-objekti ”e” sisältää tietoa tapahtuneesta poikkeuksesta, josta voi olla hyötyä palautustoimia suoritettaessa.

Java Poikkeusluokkahierarkia

Yhden catch-lausekkeen suorittamisen jälkeen muut ohitetaan ja suoritus jatkuu try- ja catch-lohkojen jälkeen. Sisäkkäisten catch-lohkojen on noudatettava poikkeushierarkiaa tarkimmasta aliluokasta yleisimpään pääluokkaan.

Java Poikkeushierarkia

  • Kaikki poikkeusluokat mukana Java Laajenna luokkaa Throwable. Throwablella on kaksi alaluokkaa, Error ja Exception.
  • Error-luokka määrittelee poikkeukset tai ongelmat, joiden ei odoteta esiintyvän ohjelmasi normaaleissa olosuhteissa, esimerkiksi muistivirhe, laitteistovirhe tai JVM-virhe.
  • Exception-luokka edustaa poikkeuksia, jotka ohjelmasi pystyy käsittelemään, ja ohjelmasi voi toipua näistä poikkeuksista try- ja catch-lohkojen avulla.
  • RuntimeException on Exception-luokan aliluokka. Tämän tyyppiset poikkeukset edustavat tarkistamattomia poikkeuksia, jotka tapahtuvat suorituksen aikana ja joita ei voida havaita käännösaikana. Hyviä esimerkkejä ovat jaa nollalla -poikkeus ja null-osoitinpoikkeus.
  • IOException-poikkeus luodaan syöttö- ja tulostustoimintojen aikana.
  • Keskeytetty poikkeus kohdassa Java syntyy monisäikeisten toimintojen aikana, kun säie keskeytetään.

Esimerkki: try- ja catch-lohkojen sisäkkäisyys

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-poikkeus luodaan. Muuta int d:n arvoksi 0. Tallenna, käännä ja suorita koodi.

Vaihe 4) ArithmeticException-poikkeus on luotava.

Vaihe 5) Poista kommenttiosoitus riviltä 10 riville 12. Tallenna, käännä ja suorita koodi.

Vaihe 6) Käännösvirhe? Tämä johtuu siitä, että Exception on ArithmeticExceptionin kantaluokka. Exception-luokka voi käsitellä myös minkä tahansa ArithmeticExceptionin nostaman poikkeuksen. Niinpä ArithmeticExceptionin catch-lohko ei koskaan pääse suoritettavaksi, mikä tekee siitä tarpeettoman. Tästä johtuu käännösvirhe.

Java Lopuksi Block

Lopulta lohko on toteutetaan poikkeuksesta huolimatta kokeilulohkossa. se on valinnainen käytettäväksi try-lohkon kanssa. Finally-lohko on oikea paikka vapauttaa resursseja, kuten tietokantayhteyksiä, tiedostoja tai verkkosocketteja.

 try {
  statement(s)
 } catch (ExceptiontType name) {

  statement(s)

 } finally {

  statement(s)

 }

Jos try-lohkossa syntyy poikkeus, finally-lohko suoritetaan catch-lohkon valmistuttua.

Esimerkki finally Blockista

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 tuloste: finally-lohko suoritetaan, vaikka poikkeus syntyy.

Vaihe 4) Muuta muuttujan d arvoksi 1. Tallenna, käännä ja suorita koodi ja tarkkaile tulostetta.

Parhaat käytännöt Java poikkeus Käsittely

Muutaman todistetun säännön noudattaminen auttaa sinua pitämään Java koodi joustava, luettava ja helppo debugata:

  • Poimi ensin tarkin poikkeus ja sitten yleisemmät, jotta poikkeushierarkian eheys säilyy.
  • Vältä tyhjiä catch-lohkoja. Kirjaa ainakin poikkeus lokiin, jotta perussyy ei koskaan katoa.
  • Käytä finally-lohkoa tai kokeile resurssien käyttöä tiedostojen, sokettien ja tietokantayhteyksien vapauttamiseen.
  • Heitä tarkistettuja poikkeuksia vain, kun kutsuja voi kohtuudella toipua, ja käytä tarkistamattomia poikkeuksia ohjelmointivirheiden varalta.
  • Kääri matalan tason poikkeukset merkitykselliseen liiketoimintapoikkeukseen API:n sujuvuuden säilyttämiseksitracts puhdas.
  • Älä koskaan niele InterruptedException-poikkeusta hiljaisesti monisäikeisessä koodissa, palauta keskeytyslippu sen sijaan.

UKK

Tarkistetut poikkeukset tarkistetaan käännösaikana ja ne on joko ilmoitettava tai pyydystettävä, kuten IOException. Tarkistamattomat poikkeukset pidentävät RuntimeException-poikkeusta, tapahtuvat suorituksen aikana eivätkä vaadi pakollista käsittelyä, kuten NullPointerException tai ArithmeticException.

Finally-lohko suoritetaan aina try- ja catch-lohkojen jälkeen riippumatta siitä, tapahtuiko poikkeus vai ei. Se on turvallisin paikka vapauttaa resursseja, kuten tiedostokahvoja, tietokantayhteyksiä tai soketteja, mikä varmistaa toimintojen virheettömän päättymisen.

Avainsanaa throw käytetään metodin sisällä poikkeusobjektin luomiseen, kun taas avainsanaa throws käytetään metodin allekirjoituksessa määrittämään, että metodi voi välittää tiettyjä tarkistettuja poikkeuksia kutsujalleen käsiteltäväksi.

Kyllä. Try-lohkoa voi seurata finally-lohko ilman catch-lohkoa. Tätä mallia käytetään, kun kehittäjä haluaa varmistaa cleanup-koodin suorittamisen, vaikka itse poikkeus välittyykin kutsujalle.

Kyllä. Tekoälyllä toimivat havainnointityökalut analysoivat pinoa traclokeja ja koodipolkuja ennustaakseen, missä ajonaikaisia ​​poikkeuksia todennäköisesti esiintyy. Ne ehdottavat puolustustarkistuksia, suosittelevat kiinniottojen sijoittelua ja pinnan poikkeavuuksia, auttavatping tiimit estävät kaatumiset ennen kuin ne pääsevät tuotantoon.

Tekoälyavustajat jäsentävät pinoa traces, korreloivat ne lähdekoodin kanssa ja ehdottavat todennäköisiä perimmäisiä syitä ja korjauksia. He luovat try catch -malleja, suosittelevat lokitietojen parannuksia ja jopa kirjoittavat vialliset metodit uudelleen, mikä vähentää merkittävästi kehittäjien vianmääritykseen käyttämää aikaa. Java poikkeuksia.

Tiivistä tämä viesti seuraavasti: