Afhandeling van uitzonderingen Java

Wat is uitzondering in Java?

Uitzondering binnen Java is een gebeurtenis die de uitvoering van programma-instructies onderbreekt en de normale stroom van programma-uitvoering verstoort. Het is een object dat informatie over een foutgebeurtenis verpakt die binnen een methode heeft plaatsgevonden en wordt doorgegeven aan het runtimesysteem. In Javaworden uitzonderingen voornamelijk gebruikt om verschillende soorten foutcondities aan te geven.

Er zijn twee soorten fouten:

  1. Compileertijdfouten
  2. Runtime-fouten

Compileerfouten kunnen opnieuw in twee typen worden ingedeeld:

  • Syntaxisfouten
  • Semantische fouten

Syntaxisfouten Voorbeeld:

In plaats van te verklaren int a; je hebt het ten onrechte aangegeven als in a; waarvoor de compiler een fout zal genereren.

Voorbeeld: U heeft een variabele gedeclareerd int a; en na enkele regels code declareer je opnieuw een geheel getal als int a;Al deze fouten worden gemarkeerd wanneer u de code compileert.

Voorbeeld van runtimefouten

Een Runtime-fout wordt een Uitzonderingen fout. Het is een gebeurtenis die de normale stroom van de uitvoering van het programma onderbreekt. Voorbeelden van uitzonderingen zijn rekenkundige uitzondering, Nullpointer-uitzondering, Delen door nul-uitzondering, enz. Uitzonderingen in Java zijn iets waar de ontwikkelaar geen controle over heeft.

Klik hier als de video niet toegankelijk is

Waarom hebben we uitzonderingen nodig?

Stel, je hebt een programma geschreven om toegang te krijgen tot de server. Alles werkte prima tijdens de ontwikkeling.ping de code.

Java uitzondering Handling

Tijdens de daadwerkelijke productierun is de server offline. Wanneer uw programma probeert er toegang toe te krijgen, wordt er een uitzondering gegenereerd.

Java uitzondering Handling

Hoe om te gaan met uitzonderingen

Tot nu toe hebben we gezien dat uitzonderingen buiten de controle van de ontwikkelaar vallen. Maar het is geen oplossing om het falen van uw code te wijten aan milieukwesties. Je hebt een Robuuste Programmering nodig, die voor uitzonderlijke situaties zorgt. Een dergelijke code staat bekend als Uitzonderingsbehandelaar.

In ons voorbeeld zou een goede afhandeling van uitzonderingen bestaan โ€‹โ€‹uit: wanneer de server niet beschikbaar is, verbinding maken met de back-upserver.

Java uitzondering Handling

Om dit te implementeren, voert u uw code in om verbinding te maken met de server (met behulp van traditionele if- en else-voorwaarden). U controleert of de server down is. Als dat zo is, schrijft u de code om verbinding te maken met de back-upserver. Een dergelijke organisatie van code, met behulp van een "if"- en "else"-lus, is niet effectief wanneer uw code meerdere Java-uitzonderingen ermee omgaan.

class connect{
	if(Server Up){
	 // code to connect to server
	}
	else{
	 // code to connect to BACKUP server
	}
}

Probeer Catch Block

Java biedt een ingebouwde uitzonderlijke handling.

  1. De normale code gaat in a TRY blok.
  2. De code voor het afhandelen van uitzonderingen wordt in het bestand CATCH blok

Probeer Catch Block

In ons voorbeeld bevat het TRY-blok de code om verbinding te maken met de server. Het CATCH-blok bevat de code om verbinding te maken met de back-upserver. Als de server actief is, wordt de code in het CATCH-blok genegeerd. Als de server down is, wordt er een uitzondering gegenereerd en wordt de code in het catch-blok uitgevoerd.

Probeer Catch Block

Dit is dus hoe de uitzondering wordt afgehandeld Java.

Syntaxis voor het gebruik van try & catch

try{
    statement(s)
}
catch (exceptiontype name){
	statement(s)
}

Voorbeeld

Stap 1) Kopieer de volgende code in een 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");
   }
}

Stap 2) Sla het bestand op en compileer de code. Voer het programma uit met behulp van command, java Javauitzondering

Stap 3) Een rekenkundige uitzondering โ€“ delen door nul wordt weergegeven zoals hieronder voor regel # 5 en regel # 6 wordt nooit uitgevoerd

Stap 4) Laten we nu eens kijken hoe try-and-catch ons zal helpen om met deze uitzondering om te gaan. We zullen de uitzondering die de coderegel veroorzaakt, in a plaatsen proberen blok, gevolgd door een vangst blok. Kopieer de volgende code in de 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");
 }
}

Stap 5) Sla de code op, compileer en voer deze uit. U krijgt de volgende uitvoer

Probeer Catch Block

Zoals u ziet, wordt de uitzondering afgehandeld en wordt de laatste regel code ook uitgevoerd. Houd er ook rekening mee dat regel #7 niet wordt uitgevoerd omdat zodra er een uitzondering wordt gemaakt, springt de controlestroom naar het catch-blok.

Let op: Het AritmeticException-object โ€œeโ€ bevat informatie over de opgetreden uitzondering, wat nuttig kan zijn bij het ondernemen van herstelacties.

Java Uitzonderingsklasse Hiรซrarchie

Nadat รฉรฉn catch-instructie is uitgevoerd, worden de andere omzeild en wordt de uitvoering voortgezet na het try/catch-blok. De geneste catch-blokken volgen de uitzonderingshiรซrarchie.


Java Uitzonderingshiรซrarchie

  • Alle uitzonderingsklassen in Java breid de klasse 'Werpbaar' uit. Throwable heeft twee subklassen, Error en Exception
  • De klasse Error definieert de uitzondering of de problemen die naar verwachting onder normale omstandigheden niet door ons programma zullen optreden, bijvoorbeeld geheugenfout, hardwarefout, JVM-fout, enz.
  • De klasse Exception vertegenwoordigt de uitzonderingen die door ons programma kunnen worden afgehandeld, en ons programma kan van deze uitzondering worden hersteld met behulp van het try-and-catch-blok
  • Een runtime-uitzondering is een subklasse van de uitzonderingsklasse. Uitzonderingen van dit type vertegenwoordigen uitzonderingen die optreden tijdens de uitvoering en die niet kunnen worden opgelost. tracDit gebeurt tijdens het compileren. Een uitstekend voorbeeld hiervan is een deling door nul-uitzondering, een null-pointer-uitzondering, enzovoort.
  • IO-uitzondering wordt gegenereerd tijdens invoer- en uitvoerbewerkingen
  • Onderbroken uitzonderingen in Java, wordt gegenereerd tijdens meerdere threads.

Voorbeeld: Het nesten van try-and-catch-blokken begrijpen

Stap 1) Kopieer de volgende code in een 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");
 }
}

Stap 2) Sla het bestand op en compileer de code. Voer het programma uit met behulp van de opdracht, Java Javauitzondering.

Stap 3) Er wordt een ArrayIndexOutOfBoundsException gegenereerd. Verander de waarde van int d in 0. Bewaar, compileer en voer de code uit.

Stap 4) Er moet een ArithmeticException worden gegenereerd.

Stap 5) Verwijder commentaar op regel #10 tot en met regel #12. Bewaar, compileer en voer de code uit.

Stap 6) Compilatiefout? Dit komt omdat Exception de basisklasse is van ArithmeticException Exception. Elke uitzondering die door ArithmeticException wordt gegenereerd, kan ook door de klasse Exception worden afgehandeld. Het catch-blok van ArithmeticException krijgt dus nooit de kans om te worden uitgevoerd, waardoor het overbodig wordt. Vandaar de compilatiefout.

Java Eindelijk Blok

Het laatste blok is uitgevoerd ongeacht of er een uitzondering wordt gemaakt in het try-blok. Het is optioneel te gebruiken met een try-blok.

 try {
  statement(s)
 } catch (ExceptiontType name) {

  statement(s)

 } finally {

  statement(s)

 }

Als er een uitzondering optreedt in het try-blok, wordt het blok uiteindelijk uitgevoerd nadat het catch-blok is uitgevoerd.

Voorbeeld

Stap 1) Kopieer de volgende code in een 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");
  }
}
}

Stap 2) Opslaan, compileren en uitvoeren Code.

Stap 3) Verwachte resultaten. Ten slotte wordt het blok uitgevoerd, ook al is er een uitzondering opgetreden.

Stap 4) Verander de waarde van variabele d = 1. Bewaar, compileer en voer de code uit en bekijk de uitvoer. Onderaan het formulier

Samenvatting

  • An Uitzondering is een runtimefout die de normale stroom van programma-uitvoering onderbreekt. Verstoring tijdens de uitvoering van het programma wordt fout of uitzondering genoemd.
  • Fouten worden in twee categorieรซn ingedeeld
    • Compileertijdfouten โ€“ Syntaxisfouten, semantische fouten
    • Runtime-fouten - Uitzondering
  • A robuust programma moet alle uitzonderingen afhandelen en ga verder met de normale stroom van programma-uitvoering. Java biedt een ingebouwde uitzonderlijke verwerkingsmethode
  • Exception Handler is een set code die behandelt een uitzondering. Uitzonderingen kunnen worden afgehandeld in Java met behulp van try & catch.
  • Probeer blok: Normale code gaat op dit blok.
  • Vangstblok: Als er een fout zit in de normale code, wordt deze in dit blok geplaatst

Vat dit bericht samen met: