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.

  • ⚠️ Definirana iznimka: Iznimka je događaj tijekom izvođenja koji prekida standardni slijed izvršavanja i predstavljen je kao objekt koji opisuje stanje pogreške.
  • 🧯 Isprobajte Catch Block: Omotajte rizični kod unutar try bloka i nakon njega dodajte jedan ili više catch blokova kako biste elegantno uhvatili određene tipove iznimaka.
  • 🔁 Konačno ponašanje: Blok finally se uvijek izvršava nakon try i catch naredbi, što ga čini idealnim za zatvaranje datoteka, socketa ili oslobađanje drugih sistemskih resursa.
  • ✅ Hijerarhija iznimki: Svi izuzetci nasljeđuju od Throwable, koji se grana u Error i Exception, pri čemu RuntimeException pokriva neprovjerene slučajeve poput dijeljenja s nulom.
  • 🧪 Najbolje prakse: Prvo uhvatite najspecifičniju iznimku, izbjegavajte prazne catch blokove, zapisujte smislene poruke i koristite multi-catch kako bi kod bio sažet i održiv.

Upravljanje iznimkama Java

Š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:

  1. Pogreške vremena kompajliranja
  2. 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.

Java iznimka Rukovanje

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.

Java iznimka Rukovanje

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.

Java iznimka Rukovanje

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.

  1. Normalni kod ulazi u a POKUŠAJ blok.
  2. Kod za rukovanje iznimkama ide u ULOV blok.

Pokušajte Catch Block

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.

Pokušajte Catch Block

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.

Pokušajte Catch Block

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.

Java Hijerarhija izuzetaka

  • 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.

Pitanja i odgovori

Provjereni iznimci se provjeravaju u vrijeme kompajliranja i moraju se deklarirati ili uhvatiti, kao što je IOException. Neprovjereni iznimci proširuju RuntimeException, javljaju se u vrijeme izvođenja i ne zahtijevaju obavezno rukovanje, kao što su NullPointerException ili ArithmeticException.

Blok finally se uvijek izvršava nakon blokova try i catch, bez obzira na to je li došlo do iznimke ili ne. To je najsigurnije mjesto za oslobađanje resursa kao što su ručke datoteka, veze s bazom podataka ili utičnice, osiguravajući čist završetak operacija.

Ključna riječ throw koristi se unutar metode za stvarno podizanje objekta iznimke, dok se throws koristi u potpisu metode za deklariranje da metoda može proslijediti određene provjerene iznimke svom pozivatelju za obradu.

Da. Nakon bloka try može slijediti blok finally bez ikakvog bloka catch. Ovaj se obrazac koristi kada programer želi osigurati da se kod za čišćenje izvršava čak i ako se sama iznimka širi pozivatelju.

Da. Alati za promatranje pokretani umjetnom inteligencijom analiziraju stog traczapise, zapisnike i putanje koda kako bi se predvidjelo gdje će se vjerojatno pojaviti iznimke tijekom izvođenja. Predlažu obrambene provjere, preporučuju postavljanje hvatanja i površinske anomalije, pomažuping timovi sprječavaju padove prije nego što dođu do proizvodnje.

AI asistenti parsiraju stog traces, povezuju ih s izvornim kodom i predlažu vjerojatne uzroke i rješenja. Generiraju predloške try catcha, preporučuju poboljšanja zapisivanja, pa čak i prepisuju neispravne metode, dramatično smanjujući vrijeme koje programeri provode dijagnosticirajući Java iznimke.

Sažmite ovu objavu uz: