Ausnahmebehandlung in Java

Was ist Ausnahme in Java?

Ausnahme in Java ist ein Ereignis, das die Ausführung von Programmbefehlen unterbricht und den normalen Ablauf der Programmausführung stört. Es ist ein Objekt, das Informationen zu einem Fehlerereignis einschließt, das innerhalb einer Methode aufgetreten ist, und es wird an das Laufzeitsystem übergeben. In JavaAusnahmen werden hauptsächlich zum Anzeigen unterschiedlicher Arten von Fehlerzuständen verwendet.

Es gibt zwei Arten von Fehlern:

  1. Fehler bei der Kompilierungszeit
  2. Laufzeitfehler

Kompilierzeitfehler können wiederum in zwei Typen eingeteilt werden:

  • Syntaxfehler
  • Semantische Fehler

Beispiel für Syntaxfehler:

Anstatt zu deklarieren int a; Sie haben es fälschlicherweise als angegeben in a; für welchen Compiler ein Fehler ausgegeben wird.

Beispiel: Sie haben eine Variable deklariert int a; und nach einigen Codezeilen deklarieren Sie erneut eine Ganzzahl als int a;. Alle diese Fehler werden hervorgehoben, wenn Sie den Code kompilieren.

Beispiel für Laufzeitfehler

Ein Laufzeitfehler wird als ein bezeichnet Ausnahmen Fehler. Es handelt sich um jedes Ereignis, das den normalen Ablauf der Programmausführung unterbricht. Beispiele für Ausnahmen sind arithmetische Ausnahmen, Nullzeiger-Ausnahmen, Division durch Null-Ausnahmen usw. Ausnahmen in Java liegen außerhalb der Kontrolle der Entwickler.

Klicke hier wenn das Video nicht zugänglich ist

Warum brauchen wir eine Ausnahme?

Angenommen, Sie haben ein Programm für den Zugriff auf den Server programmiert. Während Sie den Code entwickelt haben, hat alles gut funktioniert.

Java Ausnahmebehandlung

Während des eigentlichen Produktionslaufs ist der Server ausgefallen. Wenn Ihr Programm versucht, darauf zuzugreifen, wird eine Ausnahme ausgelöst.

Java Ausnahmebehandlung

So behandeln Sie Ausnahmen

Soweit wir gesehen haben, liegen Ausnahmen außerhalb der Kontrolle des Entwicklers. Es ist jedoch keine Lösung, den Fehler Ihres Codes auf Umweltprobleme zurückzuführen. Sie benötigen eine robuste Programmierung, die sich um Ausnahmesituationen kümmert. Ein solcher Code ist bekannt als Ausnahmebehandler.

In unserem Beispiel wäre eine gute Ausnahmebehandlung, wenn der Server ausfällt, eine Verbindung zum Backup-Server herzustellen.

Java Ausnahmebehandlung

Um dies umzusetzen, geben Sie Ihren Code ein, um eine Verbindung zum Server herzustellen (unter Verwendung traditioneller if- und else-Bedingungen). Sie werden prüfen, ob der Server ausgefallen ist. Wenn ja, schreiben Sie den Code, um eine Verbindung zum Backup-Server herzustellen. Eine solche Organisation des Codes mit „if“- und „else“-Schleifen ist nicht effektiv, wenn Ihr Code mehrere Java-Ausnahmen zu handhaben.

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

Versuchen Sie es mit Catch Block

Java bietet eine eingebaute außergewöhnliche Handhabung.

  1. Der normale Code geht in a TESTEN blockieren.
  2. Der Ausnahmebehandlungscode geht in die CATCH Schutzmassnahmen bei

Versuchen Sie es mit Catch Block

In unserem Beispiel enthält der TRY-Block den Code für die Verbindung mit dem Server. Der CATCH-Block enthält den Code für die Verbindung mit dem Backup-Server. Wenn der Server aktiv ist, wird der Code im CATCH-Block ignoriert. Wenn der Server ausgefallen ist, wird eine Ausnahme ausgelöst und der Code im Catch-Block ausgeführt.

Versuchen Sie es mit Catch Block

So wird die Ausnahme behandelt in Java.

Syntax für die Verwendung von Try & Catch

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

Beispiel

Schritt 1) Kopieren Sie den folgenden Code in einen 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");
   }
}

Schritt 2) Speichern Sie die Datei und kompilieren Sie den Code. Führen Sie das Programm mit dem Befehl java aus JavaException

Schritt 3) Eine arithmetische Ausnahme – Division durch Null – wird wie unten für Zeile Nr. 5 dargestellt und Zeile Nr. 6 wird nie ausgeführt

Schritt 4) Sehen wir uns nun an, wie Try and Catch uns dabei hilft, mit dieser Ausnahme umzugehen. Wir werden die Ausnahme, die die Codezeile verursacht, in a einfügen versuchen Block, gefolgt von a Fang Block. Kopieren Sie den folgenden Code in den 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");
 }
}

Schritt 5) Speichern, kompilieren und führen Sie den Code aus. Sie erhalten die folgende Ausgabe

Versuchen Sie es mit Catch Block

Wie Sie sehen, wird die Ausnahme behandelt und auch die letzte Codezeile ausgeführt. Beachten Sie außerdem, dass Zeile Nr. 7 nicht ausgeführt wird, weil Sobald eine Ausnahme ausgelöst wird, springt der Kontrollfluss zum Catch-Block.

Hinweis: Das AritmeticException-Objekt „e“ enthält Informationen über die aufgetretene Ausnahme, die bei der Durchführung von Wiederherstellungsmaßnahmen hilfreich sein können.

Java Ausnahmeklassenhierarchie

Nachdem eine Catch-Anweisung ausgeführt wurde, werden die anderen umgangen und die Ausführung wird nach dem Try/Catch-Block fortgesetzt. Die verschachtelten Catch-Blöcke folgen der Ausnahmehierarchie.


Java Ausnahmehierarchie

  • Alle Ausnahmeklassen in Java Erweitern Sie die Klasse 'Throwable'. Throwable hat zwei Unterklassen, Error und Exception
  • Die Fehlerklasse definiert die Ausnahme oder die Probleme, die unter normalen Umständen von unserem Programm nicht erwartet werden, z. B. Speicherfehler, Hardwarefehler, JVM-Fehler usw
  • Die Exception-Klasse stellt die Ausnahmen dar, die von unserem Programm behandelt werden können, und unser Programm kann diese Ausnahme mithilfe des Try- und Catch-Blocks wiederherstellen
  • Eine Laufzeitausnahme ist eine Unterklasse der Ausnahmeklasse. Die Ausnahme dieses Typs stellt eine Ausnahme dar, die zur Laufzeit auftritt und die zur Kompilierungszeit nicht verfolgt werden kann. Ein hervorragendes Beispiel hierfür ist die Ausnahme „Dividieren durch Null“ oder die Ausnahme „Nullzeiger“ usw.
  • Bei Eingabe- und Ausgabevorgängen wird eine IO-Ausnahme generiert.
  • Unterbrochene Ausnahmen in Java, wird während der Mehrfachthreadbearbeitung generiert.

Ejemplo: Verschachtelung von Try- und Catch-Blöcken verstehen

Schritt 1) Kopieren Sie den folgenden Code in einen 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");
 }
}

Schritt 2) Speichern Sie die Datei und kompilieren Sie den Code. Führen Sie das Programm mit dem Befehl aus: Java JavaException.

Schritt 3) Es wird eine ArrayIndexOutOfBoundsException generiert. Ändern Sie den Wert von int d auf 0. Speichern, kompilieren und führen Sie den Code aus.

Schritt 4) Es muss eine ArithmeticException generiert werden.

Schritt 5) Kommentieren Sie Zeile 10 bis Zeile 12 aus. Speichern, kompilieren und führen Sie den Code aus.

Schritt 6) Kompilierungsfehler? Dies liegt daran, dass Exception die Basisklasse von ArithmeticException Exception ist. Jede von ArithmeticException ausgelöste Ausnahme kann auch von der Exception-Klasse behandelt werden. Daher wird der Catch-Block von ArithmeticException nie ausgeführt, was ihn überflüssig macht. Daher der Kompilierungsfehler.

Java Endlich blockieren

Der „finally“-Block ist wird unabhängig davon ausgeführt, ob eine Ausnahme ausgelöst wurde im try-Block. Es ist optional zur Verwendung mit einem Try-Block.

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

  statement(s)

 } finally {

  statement(s)

 }

Falls im Try-Block eine Ausnahme ausgelöst wird, wird der Final-Block nach der Ausführung des Catch-Blocks ausgeführt.

Beispiel

Schritt 1) Kopieren Sie den folgenden Code in einen 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");
  }
}
}

Schritt 2) Speichern, kompilieren und führen Sie den Code aus.

Schritt 3) Erwartete Ausgabe. Schließlich wird der Block ausgeführt, obwohl eine Ausnahme ausgelöst wird.

Schritt 4) Ändern Sie den Wert der Variablen d = 1. Speichern, kompilieren und führen Sie den Code aus und beobachten Sie die Ausgabe. Unten im Formular

Zusammenfassung

  • An Ausnahme ist ein Laufzeitfehler Dies unterbricht den normalen Ablauf der Programmausführung. Eine Unterbrechung während der Ausführung des Programms wird als Fehler oder Ausnahme bezeichnet.
  • Fehler werden in zwei Kategorien eingeteilt
    • Fehler bei der Kompilierung – Syntaxfehler, Semantikfehler
    • Laufzeitfehler - Ausnahme
  • A Ein robustes Programm sollte alle Ausnahmen behandeln und fahren Sie mit dem normalen Ablauf der Programmausführung fort. Java bietet eine eingebaute außergewöhnliche Handhabungsmethode
  • Der Ausnahmehandler ist eine Reihe von Codes, die behandelt eine AusnahmeAusnahmen können behandelt werden in Java mit Try & Catch.
  • Versuchen Sie es mit Blockieren: Normaler Code geht in diesen Block.
  • Fangblock: Wenn im normalen Code ein Fehler vorliegt, wird er in diesen Block verschoben