Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java fängt mehrere Ausnahmen ab

Java fängt mehrere Ausnahmen ab

In diesem Tutorial lernen wir anhand von Beispielen, mehrere Ausnahmen in Java zu behandeln.

Vor Java 7 mussten wir mehrere Ausnahmebehandlungscodes für verschiedene Arten von Ausnahmen schreiben, selbst wenn es Coderedundanz gab.

Nehmen wir ein Beispiel.

Beispiel 1:Mehrere catch-Blöcke

class Main {
  public static void main(String[] args) {
    try {
      int array[] = new int[10];
      array[10] = 30 / 0;
    } catch (ArithmeticException e) {
      System.out.println(e.getMessage());
    } catch (ArrayIndexOutOfBoundsException e) {
      System.out.println(e.getMessage());
    } 
  }
}

Ausgabe

/ by zero

In diesem Beispiel können zwei Ausnahmen auftreten:

Wir drucken die Ausnahmemeldung sowohl in catch Blöcke, d.h. doppelter Code.

Die Assoziativität des Zuweisungsoperators = ist von rechts nach links, also ein ArithmeticException wird zuerst mit der Nachricht / by zero geworfen .


Mehrere Ausnahmen in einem Catch-Block behandeln

In Java SE 7 und höher können wir jetzt mehr als einen Ausnahmetyp in einem einzigen catch abfangen blockieren.

Jeder Ausnahmetyp, der von catch behandelt werden kann Block wird durch einen senkrechten Strich oder senkrechten Strich | getrennt .

Seine Syntax ist:

try {
  // code
} catch (ExceptionType1 | Exceptiontype2 ex) { 
  // catch block
}

Beispiel 2:Multi-Catch-Block

class Main {
  public static void main(String[] args) {
    try {
      int array[] = new int[10];
      array[10] = 30 / 0;
    } catch (ArithmeticException | ArrayIndexOutOfBoundsException e) {
      System.out.println(e.getMessage());
    }
  }
}

Ausgabe

/ by zero

Abfangen mehrerer Ausnahmen in einem einzigen catch Block reduziert die Code-Duplizierung und erhöht die Effizienz.

Der beim Kompilieren dieses Programms generierte Bytecode ist kleiner als das Programm mit mehreren catch Blöcke, da es keine Coderedundanz gibt.

Hinweis: Wenn ein catch block behandelt mehrere Ausnahmen, der catch-Parameter ist implizit final . Das bedeutet, dass wir Catch-Parametern keine Werte zuweisen können.


Basisausnahme abfangen

Beim Abfangen mehrerer Ausnahmen in einem einzigen catch Block wird die Regel auf spezialisiert verallgemeinert.

Das heißt, wenn es eine Hierarchie von Ausnahmen im catch gibt -Block können wir nur die Basisausnahme abfangen, anstatt mehrere spezialisierte Ausnahmen abzufangen.

Nehmen wir ein Beispiel.

Beispiel 3:Nur Basis-Ausnahmeklasse abfangen

class Main {
  public static void main(String[] args) {
    try {
      int array[] = new int[10];
      array[10] = 30 / 0;
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }
}

Ausgabe

/ by zero

Wir wissen, dass alle Ausnahmeklassen Unterklassen von Exception sind Klasse. Anstatt also mehrere spezialisierte Ausnahmen abzufangen, können wir einfach Exception abfangen Klasse.


Wenn die Basisausnahmeklasse bereits in catch angegeben wurde verwenden Sie keine untergeordneten Ausnahmeklassen im selben catch Block. Andernfalls erhalten wir einen Kompilierungsfehler.

Nehmen wir ein Beispiel.

Beispiel 4:Abfangen von Basis- und untergeordneten Ausnahmeklassen

class Main {
  public static void main(String[] args) {
    try {
      int array[] = new int[10];
      array[10] = 30 / 0;
    } catch (Exception | ArithmeticException | ArrayIndexOutOfBoundsException e) {
      System.out.println(e.getMessage());
    }
  }
}

Ausgabe

Main.java:6: error: Alternatives in a multi-catch statement cannot be related by subclassing

In diesem Beispiel ArithmeticException und ArrayIndexOutOfBoundsException sind beide Unterklassen von Exception Klasse. Wir erhalten also einen Kompilierungsfehler.


Java

  1. Java-Operatoren
  2. Java-Kommentare
  3. Java for-each-Schleife
  4. Java-Strings
  5. Java-Schnittstelle
  6. Anonyme Java-Klasse
  7. Java versuchen ... fangen
  8. Java-Wurf und Würfe
  9. Java-Versuch-mit-Ressourcen
  10. Java-Anmerkungen