Upravljanje iznimkama Java
โก Pametni saลพetak
Java Obrada iznimaka pruลพa strukturirani mehanizam za upravljanje greลกkama tijekom izvoฤenja koje remete normalan tijek programa. Koristi kljuฤne rijeฤi try, catch, finally, throw i throws za otkrivanje, izoliranje i oporavak od iznimnih uvjeta uz odrลพavanje...ping aplikacije robusne i predvidljive.

ล to je iznimka u Java?
An Izuzetak u Java je dogaฤaj koji prekida izvrลกavanje programskih instrukcija i ometa normalan tijek izvrลกavanja programa. To je objekt koji omotava informaciju o dogaฤaju pogreลกke koji se dogodio unutar metode i prenosi se u sustav za izvoฤenje. U Java, iznimke se uglavnom koriste za signaliziranje razliฤitih vrsta pogreลกaka kako bi programeri mogli reagirati na njih na kontroliran naฤin.
Postoje dvije ลกiroke kategorije pogreลกaka u Java:
- Pogreลกke vremena kompajliranja
- Pogreลกke u izvoฤenju
Greลกke pri kompajliranju mogu se podijeliti u dvije dodatne vrste:
- Sintaktiฤke pogreลกke
- Semantiฤke pogreลกke
Primjer sintaktiฤkih pogreลกaka:
Umjesto da se izjasni int a; greลกkom ste to proglasili kao in a;, za ลกto ฤe kompajler izbaciti greลกku.
Primjer semantiฤkih pogreลกaka: Deklarisali ste varijablu int a; i nakon nekoliko redaka koda ponovno deklarirate cijeli broj kao int a;. Sve ove pogreลกke su istaknute kada kompajlirate kod.
Primjer pogreลกaka tijekom izvoฤenja
Pogreลกka u vremenu izvoฤenja naziva se izuzetakTo je bilo koji dogaฤaj koji prekida normalan tok izvrลกavanja programa. Primjeri iznimaka ukljuฤuju aritmetiฤku iznimku, NullPointerException, iznimku dijeljenja s nulom i mnoge druge. Iznimke u Java su uvjeti koji su ฤesto izvan izravne kontrole programera.
Kliknite ovdje ako video nije dostupan
Zaลกto nam je potrebna obrada iznimki?
Pretpostavimo da ste napisali program za pristup posluลพitelju. Sve funkcionira dobro dok razvijateping kod u lokalnom okruลพenju s kontroliranim uvjetima.
Tijekom stvarnog produkcijskog izvoฤenja, posluลพitelj moลพe biti u kvaru. Kada vaลก program pokuลกa pristupiti njemu, izbacuje se iznimka i bez odgovarajuฤe obrade program ฤe se naglo prekinuti.
Kako obraditi iznimku u Java
Do sada smo vidjeli da je iznimka ฤesto izvan kontrole programera. Meฤutim, okrivljavanje problema s okolinom za neuspjeh koda nije pravo rjeลกenje. Potrebno vam je robusno programiranje koje se brine o iznimnim situacijama. Takav kod poznat je kao Obraฤivaฤ iznimki.
U naลกem primjeru, dobra obrada iznimki znaฤila bi da kada primarni posluลพitelj ne radi, program se automatski povezuje s rezervnim posluลพiteljem.
Da biste to implementirali, mogli biste napisati kod za povezivanje s posluลพiteljem koristeฤi tradicionalne uvjete if i else. Provjerit ฤete je li posluลพitelj u kvaru i ako jest, napisat ฤete kod za povezivanje s rezervnim posluลพiteljem. Takva organizacija koda pomoฤu grana โifโ i โelseโ nije uฤinkovita kada vaลก kod ima viลกe Java iznimke rukovati.
class connect{ if(Server Up){ // code to connect to server } else{ // code to connect to BACKUP server } }
Isprobajte Catch Block u Java
Java pruลพa ugraฤeni mehanizam za obradu iznimki koji odvaja normalnu logiku od logike oporavka od pogreลกaka.
- Normalni kod ulazi u a POKUล AJ blok.
- Kod za rukovanje iznimkama ide u ULOV blok.
U naลกem primjeru, blok TRY sadrลพavat ฤe kod za povezivanje s posluลพiteljem. Blok CATCH sadrลพavat ฤe kod za povezivanje s rezervnim posluลพiteljem. U sluฤaju da je posluลพitelj ukljuฤen, kod u bloku CATCH bit ฤe ignoriran. U sluฤaju da posluลพitelj ne radi, generirat ฤe se iznimka i izvrลกit ฤe se kod u bloku catch.
Dakle, ovako se iznimka obraฤuje u Java.
Sintaksa za koriลกtenje try and catch funkcija
try{ statement(s) } catch (exceptiontype name){ statement(s) }
Primjer bloka Try Catch
Korak 1) Kopirajte sljedeฤi kod u editor.
class JavaException { public static void main(String args[]){ int d = 0; int n = 20; int fraction = n/d; System.out.println("End Of Main"); } }
Korak 2) Spremite datoteku i kompajlirajte kod. Pokrenite program pomoฤu naredbe java JavaIznimka.
Korak 3) Aritmetiฤka iznimka, dijeljenje s nulom, prikazana je za redak 5, a redak 6 se nikada ne izvrลกava.
Korak 4) Sada ispitajmo kako ฤe nam try i catch pomoฤi u obradi ove iznimke. Stavit ฤemo redak koda koji uzrokuje iznimku u pokuลกati blok, nakon ฤega slijedi a ulov blokirati. Kopirajte sljedeฤi kod u editor.
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"); } }
Korak 5) Spremite, kompajlirajte i pokrenite kod. Dobit ฤete sljedeฤi izlaz.
Kao ลกto vidite, iznimka je obraฤena i zadnji redak koda je takoฤer izvrลกen. Takoฤer, imajte na umu da se redak 7 neฤe izvrลกiti jer ฤim se podigne iznimka, tok kontrole skaฤe na catch blok.
Biljeลกka: Objekt ArithmeticException "e" sadrลพi informacije o iznimci koja se dogodila, ลกto moลพe biti korisno prilikom poduzimanja akcija oporavka.
Java Hijerarhija klasa iznimki
Nakon ลกto se izvrลกi jedna naredba catch, ostale se zaobilaze, a izvrลกavanje se nastavlja nakon blokova try i catch. Ugnijeลพฤeni blokovi catch moraju slijediti hijerarhiju iznimki od najspecifiฤnije podklase do najopฤenitije roditeljske klase.
- Sve iznimke klase u Java proลกiriti klasu Throwable. Throwable ima dvije podklase, Error i Exception.
- Klasa Error definira iznimke ili probleme koji se ne oฤekuju u normalnim okolnostima u vaลกem programu, na primjer, pogreลกka memorije, pogreลกka hardvera ili pogreลกka JVM-a.
- Klasa Exception predstavlja iznimke koje vaลก program moลพe obraditi, a vaลก se program moลพe oporaviti od tih iznimki pomoฤu blokova try i catch.
- RuntimeException je podklasa klase Exception. Iznimke ovog tipa predstavljaju neprovjerene iznimke koje se javljaju za vrijeme izvoฤenja i ne mogu se otkriti za vrijeme kompajliranja. Dobri primjeri ukljuฤuju iznimku dijeljenja s nulom i iznimku nultog pokazivaฤa.
- IOException se generira tijekom operacija ulaza i izlaza.
- Prekinuta iznimka u Java generira se tijekom viลกenitnih operacija kada se nit prekine.
Primjer: Ugnijeลพฤivanje blokova try i catch
Korak 1) Kopirajte sljedeฤi kod u editor.
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"); } }
Korak 2) Spremite datoteku i kompajlirajte kod. Pokrenite program pomoฤu naredbe, Java Javaizuzetak.
Korak 3) Generira se iznimka ArrayIndexOutOfBoundsException. Promijenite vrijednost int d na 0. Spremite, kompajlirajte i pokrenite kod.
Korak 4) Mora se generirati ArithmeticException.
Korak 5) Odkomentirajte redak 10 do retka 12. Spremite, kompajlirajte i pokrenite kod.
Korak 6) Greลกka pri kompilaciji? To je zato ลกto je Exception osnovna klasa klase ArithmeticException. Bilo koja iznimka koju generira ArithmeticException takoฤer se moลพe obraditi klasom Exception. Dakle, blok catch klase ArithmeticException nikada neฤe dobiti priliku za izvrลกenje, ลกto ga ฤini redundantnim. Stoga dolazi do pogreลกke pri kompilaciji.
Java Konaฤno Blokiraj
Konaฤni blok je izvrลกava se bez obzira na pokrenutu iznimku u bloku pokuลกaja. to je opcionalno za koriลกtenje s blokom try. Blok finally je pravo mjesto za oslobaฤanje resursa kao ลกto su veze s bazom podataka, datoteke ili mreลพne utiฤnice.
try { statement(s) } catch (ExceptiontType name) { statement(s) } finally { statement(s) }
Ako se u bloku try pojavi iznimka, blok finally se izvrลกava nakon ลกto se zavrลกi blok catch.
Primjer konaฤnog bloka
Korak 1) Kopirajte sljedeฤi kod u editor.
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"); } } }
Korak 2) Spremi, kompajliraj i pokreni kod.
Korak 3) Oฤekivani izlaz: Blok finally se izvrลกava iako je izazvana iznimka.
Korak 4) Promijenite vrijednost varijable d = 1. Spremite, kompajlirajte i pokrenite kod te promatrajte izlaz.
Najbolji primjeri iz prakse za Java iznimka Rukovanje
Slijeฤenje nekoliko provjerenih pravila pomoฤi ฤe vam da odrลพite svoje Java kod otporan, ฤitljiv i jednostavan za ispravljanje pogreลกaka:
- Prvo uhvatite najspecifiฤniju iznimku, a zatim one opฤenitije, kako biste oฤuvali integritet hijerarhije iznimki.
- Izbjegavajte prazne catch blokove. Minimalno, zabiljeลพite iznimku kako se uzrok nikada ne bi izgubio.
- Koristite finally blok ili try s resursima za oslobaฤanje datoteka, utiฤnica i veza s bazom podataka.
- Provjerene iznimke bacajte samo kada pozivatelj moลพe razumno oporaviti situaciju, a neprovjerene iznimke koristite za programske pogreลกke.
- Zamotajte iznimke niske razine u smislenu poslovnu iznimku kako biste odrลพali API contracฤisto je.
- Nikada ne gutajte InterruptedException tiho u viลกenitnom kodu, umjesto toga vratite zastavicu prekida.







