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.

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:
- Kokoa aikavirheet
- 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.
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.
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.
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.
- Normaali koodi menee a TRY lohko.
- Poikkeuskäsittelykoodi menee sisään CATCH lohko.
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.
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.
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.
- 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.







