Što je iznimka u Javi?
Iznimka u Javi je događaj koji prekida izvršavanje programskih uputa i remeti normalan tijek izvršavanja programa. To je objekt koji obavija informacije o pogrešci koje su se dogodile unutar metode i prosljeđuju se sustavu izvođenja. U Javi se iznimke uglavnom koriste za označavanje različitih vrsta stanja pogrešaka.
U ovom vodiču naučit ćete-
- Što je iznimka?
- Zašto nam treba iznimka?
- Kako postupati s iznimkom
- Pokušajte Catch Block
- Java hijerarhija klase iznimke
- Java napokon blokira
Postoje dvije vrste pogrešaka:
- Sastavite vremenske pogreške
- Pogreške tijekom izvođenja
Pogreške vremena sastavljanja mogu se ponovno klasificirati u dvije vrste:
- Sintaksne pogreške
- Semantičke pogreške
Primjer sintaksnih pogrešaka:
Umjesto da se izjasni
int a;
pogrešno ste to proglasili in a;
za koji će kompajler izbaciti pogrešku.
Primjer: Proglasili ste varijablu
int a;
i nakon nekoliko redaka koda opet deklarirate cijeli broj kao int a;
. Sve ove pogreške ističu se kada sastavljate kôd.
Primjer pogrešaka u izvođenju
Runtime pogreška naziva se iznimkom . Bilo koji događaj prekida normalan tijek izvršavanja programa.
Primjer za iznimke su aritmetička iznimka, nullpointer iznimka, podijeljena s nulom iznimka itd.
Iznimke u Javi nešto su izvan kontrole programera.
Kliknite ovdje ako videozapis nije dostupan
Zašto nam treba iznimka?
Pretpostavimo da ste kodirali program za pristup poslužitelju. Stvari su funkcionirale u redu dok ste razvijali kod.
Tijekom stvarne produkcije, poslužitelj nije u funkciji. Kada je vaš program pokušao pristupiti njemu, pojavljuje se iznimka.
Kako postupati s iznimkom
Do sada smo vidjeli, iznimka je izvan kontrole programera. Ali okrivljavanje vašeg koda za probleme zaštite okoliša nije rješenje. Treba vam robusno programiranje koje se brine o iznimnim situacijama. Takav je kôd poznat kao rukovatelj iznimkama.
U našem primjeru, dobro postupanje s iznimkama bilo bi, kad poslužitelj ne radi, povezati s rezervnim poslužiteljem.
Da biste to implementirali, unesite svoj kôd za povezivanje s poslužiteljem (koristeći tradicionalne uvjete if i else).
Provjerit ćete je li poslužitelj u kvaru. Ako je odgovor da, napišite kôd za povezivanje s rezervnim poslužiteljem.
Takva organizacija koda, pomoću petlje "if" i "else" nije učinkovita kada vaš kôd ima više Java izuzetaka za obradu.
class connect{if(Server Up){// code to connect to server}else{// code to connect to BACKUP server}}
Pokušajte Catch Block
Java pruža ugrađeno izuzetno rukovanje.
- Uobičajeni kod prelazi u TRY blok.
- Kôd za rukovanje iznimkama ide u blok CATCH
U našem primjeru, blok TRY sadržavat će kôd za povezivanje s poslužiteljem. Blok CATCH sadržavat će kôd za povezivanje s rezervnim poslužiteljem.
U slučaju da poslužitelj radi, kôd u bloku CATCH će se zanemariti. U slučaju da poslužitelj ne radi, pokreće se iznimka i izvršava se kôd u catch bloku.
Dakle, na ovaj se način obrađuje iznimka u Javi.
Sintaksa korištenja try & catch
try{statement(s)}catch (exceptiontype name){statement(s)}
Primjer
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 prevedite kôd. Pokrenite program pomoću naredbe, Java JavaException
Korak 3) Aritmetička iznimka - dijeljenje s nulom prikazano je kao dolje za redak 5 i linija 6 se nikada ne izvršava
Korak 4) Pogledajmo sada kako će nam try and catch pomoći da se nosimo s ovom iznimkom. Iznimku koja uzrokuje redak koda stavit ćemo u blok try , a zatim blok catch . 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, prevedite i pokrenite kôd. Dobit ćete sljedeći izlaz
Kao što primijetite, obrađuje se iznimka, a izvršava se i posljednji redak koda. Također, imajte na umu da se linija 7 neće izvršiti jer čim se podigne iznimka, tok kontrole skače do bloka catch.
Napomena: Objekt AritmeticException "e" sadrži informacije o iznimci koja se dogodila i mogu biti korisne u poduzimanju radnji oporavka.
Java hijerarhija klase iznimke
Nakon izvršavanja jedne naredbe catch, ostale se zaobilaze, a izvršavanje se nastavlja nakon bloka try / catch. Ugniježđeni blokovi catch slijede hijerarhiju izuzetaka.- Sve klase iznimki u Javi proširuju klasu 'Dostupno'. Throwable ima dvije potklase, Error i Exception
- Klasa Error definira iznimku ili probleme za koje naš program ne očekuje da će se pojaviti u normalnim okolnostima, primjerice pogreška memorije, hardverska pogreška, JVM pogreška itd.
- Klasa Exception predstavlja iznimke s kojima se naš program može nositi, a naš se program može oporaviti iz ove iznimke pomoću bloka try and catch
- Iznimka tijekom izvođenja je podklasa klase iznimke. Izuzetak ove vrste predstavlja iznimku koja se javlja u vrijeme izvođenja i koja se ne može pratiti u vrijeme sastavljanja. Izvrstan primjer istog je dijeljenje s nulom iznimke ili iznimka null pokazivača itd
- IO iznimka se generira tijekom ulaznih i izlaznih operacija
- Prekinute iznimke u Javi generiraju se tijekom višestrukog navoja.
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 prevedite kôd. Pokrenite program pomoću naredbe, Java JavaException .
Korak 3) Generira se ArrayIndexOutOfBoundsException. Promijenite vrijednost int d na 0. Spremite, prevedite i pokrenite kôd.
Korak 4 ) ArithmeticException se mora generirati.
Korak 5) Komentirajte redak # 10 u red # 12. Spremite, prevedite i pokrenite kôd.
Korak 6) Pogreška pri kompilaciji? To je zato što je Exception osnovna klasa ArithmeticException Exception. Bilo kojom iznimkom koju pokrene ArithmeticException može se obraditi i klasa Exception. Dakle, blok catch ArithmeticException nikada neće dobiti priliku da se izvrši što ga čini suvišnim. Otuda greška u kompilaciji.
Java napokon blokira
Konačni blok se izvršava bez obzira na izuzetak pokrenut u bloku try. Nije obavezno za upotrebu s blokom try.
try {statement(s)} catch (ExceptiontType name) {statement(s)} finally {statement(s)}
U slučaju da se u bloku try pokrene iznimka, konačno se blok izvršava nakon izvršavanja bloka catch.
Primjer
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) Spremite, prevedite i pokrenite kôd.
Korak 3) Očekivani izlaz. Napokon se izvršava blok iako se pokreće izuzetak.
Korak 4) Promijenite vrijednost varijable d = 1. Spremite, prevedite i pokrenite kôd i promatrajte izlaz. Dno obrasca
Sažetak :
- Izuzetak je run-time error koji prekida normalan protok programa execution.Disruption tijekom izvođenja programa naziva kao pogreške ili izuzetka.
- Pogreške su klasificirane u dvije kategorije
- Pogreške vremena sastavljanja - Sintaksne pogreške, Semantičke pogreške
- Pogreške tijekom izvođenja - iznimka
- Robustan program treba obraditi sve iznimke i nastaviti sa svojim normalan tijek izvođenja programa. Java nudi ugrađenu iznimnu metodu rukovanja
- Rukovatelj iznimkama skup je koda koji obrađuje iznimku . Iznimke se mogu riješiti na Javi pomoću funkcije try & catch.
- Pokušajte blokirati : Uobičajeni kod ide na ovaj blok.
- Blok hvatanja : Ako postoji pogreška u normalnom kodu, tada će ući u ovaj blok