English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Wie kann ein Programmierer in Java manuell eine Ausnahme werfen?

Ausnahmen sind Probleme, die während der Ausführung des Programms auftreten (Laufzeitfehler). Wenn eine Ausnahme auftritt, wird das Programm plötzlich beendet und der Code nach der Zeile mit der Ausnahme wird niemals ausgeführt.

Beispiel

import java.util.Scanner;
public class ExceptionExample {
   public static void main(String args[]) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Geben Sie die erste Zahl ein:");
      int a = sc.nextInt();
      System.out.println("Geben Sie die zweite Zahl ein:");
      int b = sc.nextInt();
      int c = a/b;
      System.out.println("Das Ergebnis ist: ");+c);
   }
}

Ausgaberesultat

Geben Sie die erste Zahl ein:
100
Geben Sie die zweite Zahl ein:
0
Exception in thread "main" java.lang.ArithmeticException: / von zero
at ExceptionExample.main(ExceptionExample.java:10)

Ausnahmen manuell werfen

Sie könnenthrow Das Schlüsselwort 'throw' wird verwendet, um benutzerdefinierte oder vorgedefinierte Ausnahmen explizit auszulösen.

Es gibt zwei Typen von benutzerdefinierten und vorgedefinierten Ausnahmen, und jede Ausnahme wird durch eine Klasse dargestellt, die von der Klasse Throwable abgeleitet ist.

Um eine Ausnahme explizit auszulösen, müssen Sie die Klasse ihrer Instanzialisierung initialisieren und deren Objekt mit dem Schlüsselwort 'throw' auswerfen.

Beispiel

Der folgende Java-Programm verursacht einen NullPointerException

public class ExceptionExample {
   public static void main(String[] args) {
      System.out.println("Hello");
      NullPointerException nullPointer = new NullPointerException();
      throw nullPointer;
   }
}

Ausgaberesultat

Hello
Exception in thread "main" java.lang.NullPointerException
   at MyPackage.ExceptionExample.main(ExceptionExample.java:6)

Jedes Mal, wenn eine Ausnahme explizit geworfen wird, muss sichergestellt werden, dass die Zeile mit dem Schlüsselwort 'throw' die letzte Zeile des Programms ist. Dies liegt daran, dass jeglicher Code, der nach dieser Zeile geschrieben wird, nicht zugänglich ist und es zu Compile-Zeitfehlern kommt, wenn Sie weiter unten im Code noch Codezeilen haben.

Beispiel

public class ExceptionExample {
   public static void main(String[] args) {
      System.out.println("Hello");
      NullPointerException nullPointer = new NullPointerException();
      throw nullPointer;
      System.out.println("How are you");
   }
}

Kompilierungsfehler

D:\>javac ExceptionExample.java
ExceptionExample.java:6: error: unreachable statement
   System.out.println("How are you");
   ^
1 error

Benutzerdefinierte Ausnahmen

Der Schlüsselwort 'throw' wird normalerweise verwendet, um benutzerdefinierte Ausnahmen auszulösen. Jedes Mal, wenn wir unsere eigenen Ausnahmen definieren müssen, müssen wir eine Klasse definieren, die die Klasse Throwable erweitert, und die erforderlichen Methoden überschreiben.

Instanziieren Sie diese Klasse und verwenden Sie den Schlüsselwort 'throw', um sie an jedem Ort, an dem eine Ausnahme erforderlich ist, auszulösen.

Beispiel

In folgendem Java-Programm erstellen wir eine benutzerdefinierte Ausnahmeklasse namens AgeDoesnotMatchException.

public class AgeDoesnotMatchException extends Exception {
   AgeDoesnotMatchException(String msg) {
      super(msg);
   }
}

Eine andere Klasse Student enthält zwei private Variablen name und einen parameterisierten Konstruktor zur Initialisierung von Instanzvariablen.

Als Hauptmethode akzeptieren wir den Namen und das Alter des Benutzers und initialisieren die Klasse Student durch Übermittlung der empfangenen Werte.

In der Konstruktor-Methode der Klasse Student erstellen wir eine AusnahmeAgeDoesnotMatchExceptionder Klasse, und initialisiert die Klasse Student durch Übermittlung der empfangenen Werte.17und24zwischen, eine Ausnahme wurde ausgelöst (verwenden Sie throws).

public class Student extends RuntimeException {
   private String name;
   private int age;
   public Student(String name, int age) {
      try {
         if (age <17|| age >24) {
            String msg = "Age is not between 17 und 24";
            AgeDoesnotMatchException ex = new AgeDoesnotMatchException(msg);
            throw ex;
         }
      } catch (AgeDoesnotMatchException e) {
         e.printStackTrace();
      }
      this.name = name;
      this.age = age;
   }
   public void display() {
      System.out.println("Name des Studenten: ")+this.name );
      System.out.println("Alter des Studenten: ")+this.age );
   }
   public static void main(String args[]) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Geben Sie den Namen des Studenten ein: ");
      String name = sc.next();
      System.out.println("Geben Sie das Alter des Studenten ein, sollte sein 17 und 24 (einschließlich 17 und 24);
      int age = sc.nextInt();
      Student obj = new Student(name, age);
      obj.display();
   }
}

Ausgaberesultat

Beim Ausführen dieses Programms müssen Sie Namen- und Alterwerte von der Tastatur übergeben. Wenn das angegebene Alter nicht zwischen17und24wenn das Alter nicht zwischen diesen Werten liegt, wird eine Ausnahme ausgelöst, wie folgt-

Geben Sie den Namen des Studenten ein:
Krishna
Geben Sie das Alter des Studenten ein, sollte sein 17 und 24 (einschließlich 17 und 24)
14
AgeDoesnotMatchException: Alter ist nicht zwischen 17 und 24
Name des Studenten: Krishna'
Alter des Studenten: 14
   at Student.<init>(Student.java:18)
   at Student.main(Student.java:39)
Vielleicht gefällt Ihnen auch