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

Java-Wurf und Würfe

Java Throw und Throws

In diesem Tutorial lernen wir anhand von Beispielen die Verwendung der Schlüsselwörter throw und throws für die Ausnahmebehandlung.

In Java können Ausnahmen in zwei Typen eingeteilt werden:

Siehe Java-Ausnahmen, um mehr über geprüfte und ungeprüfte Ausnahmen zu erfahren.

Normalerweise müssen wir keine ungeprüften Ausnahmen behandeln. Dies liegt daran, dass aufgrund von Programmierfehlern ungeprüfte Ausnahmen auftreten. Und es ist eine gute Praxis, sie zu korrigieren, anstatt sie zu handhaben.

Dieses Tutorial konzentriert sich nun darauf, wie geprüfte Ausnahmen mit throw behandelt werden und throws .


Java wirft Schlüsselwort aus

Wir verwenden den throws Schlüsselwort in der Methodendeklaration, um die Art der Ausnahmen zu deklarieren, die darin auftreten können.

Seine Syntax ist:

accessModifier returnType methodName() throws ExceptionType1, ExceptionType2 … {
  // code
}

Wie Sie der obigen Syntax entnehmen können, können wir throws verwenden um mehrere Ausnahmen zu erklären.


Beispiel 1:Java wirft Schlüsselwort

import java.io.*;
class Main {
  public static void findFile() throws IOException {
    // code that may produce IOException
    File newFile=new File("test.txt");
    FileInputStream stream=new FileInputStream(newFile);
  }

  public static void main(String[] args) {
    try{
      findFile();
    } catch(IOException e){
      System.out.println(e);
    }
  }
}

Ausgabe

java.io.FileNotFoundException: test.txt (No such file or directory)

Wenn wir dieses Programm ausführen, wenn die Datei test.txt existiert nicht, FileInputStream wirft einen FileNotFoundException was den IOException erweitert Klasse.

Wenn eine Methode keine Ausnahmen behandelt, muss die Art der Ausnahmen, die darin auftreten können, in throws angegeben werden -Klausel, sodass Methoden weiter oben in der Aufrufliste sie verarbeiten oder mit throws angeben können Schlüsselwort selbst.

Die findFile() Methode gibt an, dass ein IOException geworfen werden kann. Die main() Methode ruft diese Methode auf und behandelt die Ausnahme, wenn sie ausgelöst wird.


Mehrere Ausnahmen auslösen

So können wir mit throws mehrere Ausnahmen auslösen Schlüsselwort.

import java.io.*;
class Main {
  public static void findFile() throws NullPointerException, IOException, InvalidClassException {
    
    // code that may produce NullPointerException
    … … … 

    // code that may produce IOException
    … … … 

    // code that may produce InvalidClassException 
    … … … 
  }

  public static void main(String[] args) {
    try{
      findFile();
    } catch(IOException e1){
      System.out.println(e1.getMessage());
    } catch(InvalidClassException e2){
      System.out.println(e2.getMessage());
    }
  }
}

Hier der findFile() -Methode gibt an, dass sie NullPointerException auslösen kann , IOException , und InvalidClassException in seinem throws Klausel.

Beachten Sie, dass wir den NullPointerException nicht behandelt haben . Dies liegt daran, dass es sich um eine ungeprüfte Ausnahme handelt. Eine Angabe im throws ist nicht erforderlich Klausel und handhabe sie.


wirft Keyword Vs. versuchen ... fangen ... endlich

Es kann mehrere Methoden geben, die Ausnahmen verursachen können. Schreiben von try...catch für jede Methode wird mühsam und der Code wird lang und weniger lesbar.

throws ist auch nützlich, wenn Sie eine Ausnahme geprüft haben (eine Ausnahme, die behandelt werden muss), die Sie in Ihrer aktuellen Methode nicht abfangen möchten.


Java-Wurf-Schlüsselwort

Der throw Schlüsselwort wird verwendet, um explizit eine einzelne Ausnahme auszulösen.

Wenn eine Ausnahme ausgelöst wird, wird der Ablauf der Programmausführung von try übertragen Block zum catch Block. Wir verwenden den throw Schlüsselwort innerhalb einer Methode.

Seine Syntax ist:

throw throwableObject;

Ein Throwable-Objekt ist eine Instanz der Klasse Throwable oder Unterklasse von Throwable Klasse.


Beispiel 2:Java-Throw-Schlüsselwort

class Main {
  public static void divideByZero() {
    throw new ArithmeticException("Trying to divide by 0");
  }

  public static void main(String[] args) {
    divideByZero();
  }
}

Ausgabe

Exception in thread "main" java.lang.ArithmeticException: Trying to divide by 0
    at Main.divideByZero(Main.java:3)
    at Main.main(Main.java:7)
exit status 1

In diesem Beispiel werfen wir explizit einen ArithmeticException.

Hinweis: ArithmeticException ist eine ungeprüfte Ausnahme. Es ist normalerweise nicht notwendig, ungeprüfte Ausnahmen zu behandeln.


Beispiel 3:Auslösen einer geprüften Ausnahme

import java.io.*;
class Main {
  public static void findFile() throws IOException {
    throw new IOException("File not found");
  }

  public static void main(String[] args) {
    try {
      findFile();
      System.out.println("Rest of code in try block");
    } catch (IOException e) {
      System.out.println(e.getMessage());
    }
  }
}

Ausgabe

File not found

Der findFile() -Methode löst einen IOException aus mit der Nachricht, die wir an seinen Konstruktor übergeben haben.

Beachten Sie, dass wir sie im throws angeben müssen, da es sich um eine geprüfte Ausnahme handelt Klausel.

Die Methoden, die diesen findFile() aufrufen -Methode muss diese Ausnahme entweder behandeln oder sie mit throws angeben Schlüsselwort selbst.

Wir haben diese Ausnahme in main behandelt () Methode. Der Ablauf der Programmausführung wird von try übertragen Block zu catch blockieren, wenn eine Ausnahme ausgelöst wird. Also, der Rest des Codes in try Block wird übersprungen und Anweisungen im catch Block ausgeführt werden.


Java

  1. Java-Variablen und Literale
  2. Java Basic Input und Output
  3. Java-Ausdrücke, -Anweisungen und -Blöcke
  4. Java-Klasse und -Objekte
  5. Abstrakte Java-Klasse und abstrakte Methoden
  6. Java verschachtelte und innere Klasse
  7. Java fängt mehrere Ausnahmen ab
  8. Java Autoboxing und Unboxing
  9. Java String replace(), replaceAll() und replaceFirst() Methode
  10. Java String toLowercase() und toUpperCase() Methoden