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.







