logo

werfen und wirft in Java

In Java ist die Ausnahmebehandlung eines der effektivsten Mittel zur Behandlung von Laufzeitfehlern, sodass der reguläre Ablauf der Anwendung aufrechterhalten werden kann. Es behandelt Laufzeitfehler wie NullPointerException ArrayIndexOutOfBoundsException usw. Um diese Fehler effektiv zu behandeln, stellt Java zwei Schlüsselwörter throw und throws zur Verfügung.

Java-Wurf

Das Schlüsselwort throw wird in Java verwendet, um explizit eine Ausnahme von einer Methode oder einem beliebigen Codeblock auszulösen. Wir können entweder eine aktivierte oder eine nicht aktivierte Ausnahme auslösen. Das Schlüsselwort throw wird hauptsächlich zum Auslösen benutzerdefinierter Ausnahmen verwendet. 

Syntax:



werfen Beispiel

Dabei ist die Instanz ein Objekt vom Typ Throwable (oder seine Unterklassen wie Exception).

Beispiel:

throw new ArithmeticException('/ by zero');

Aber diese Ausnahme, d. h. Instanz, muss vom Typ sein Wurfbar oder eine Unterklasse von Wurfbar

Der Ausführungsfluss des Programms stoppt unmittelbar nach der Ausführung der throw-Anweisung und der nächsten einschließenden Anweisung versuchen Block wird überprüft, um zu sehen, ob er eine hat fangen Anweisung, die dem Ausnahmetyp entspricht. Wenn eine Übereinstimmung gefunden wird, wird die kontrollierte Anweisung an diese Anweisung übergeben, andernfalls wird sie als nächstes eingefügt versuchen Block wird überprüft und so weiter. Wenn keine Übereinstimmung vorhanden ist fangen gefunden wird, stoppt der Standard-Ausnahmebehandler das Programm. 

Was ist Prolog?

Beispiel: Dieses Beispiel zeigt, wo eine Ausnahme innerhalb einer Methode abgefangen und erneut ausgelöst wird.

Java
class Geeks {  static void fun()  {  try {  throw new NullPointerException('demo');  }  catch (NullPointerException e) {  System.out.println('Caught inside fun().');  throw e; // rethrowing the exception  }  }  public static void main(String args[])  {  try {  fun();  }  catch (NullPointerException e) {  System.out.println('Caught in main.');  }  } } 

Ausgabe
Caught inside fun(). Caught in main. 

Erläuterung: Das obige Beispiel zeigt die Verwendung des Schlüsselworts throw, um explizit eine NullPointerException auszulösen. Die Ausnahme wird innerhalb der abgefangen Spaß() -Methode aufgerufen und erneut ausgelöst, wo sie dann in der main()-Methode abgefangen wird.

Beispiel: Dieses Beispiel demonstriert eine arithmetische Ausnahme.

Java
// Throwing an arithmetic exception class Geeks {  public static void main(String[] args){  int numerator = 1;  int denominator = 0;  if (denominator == 0) {  // Manually throw an ArithmeticException  throw new ArithmeticException('Cannot divide by zero');  } else {  System.out.println(numerator / denominator);  }  } } 

Ausgabe:

Hangup (SIGHUP)  
Exception in thread 'main' java.lang.ArithmeticException: Cannot divide by zero
at Geeks.main(Geeks.java:9)

Erläuterung: Das obige Beispiel zeigt eine Ausnahme mithilfe von throw, bei der aufgrund einer Division durch Null explizit eine ArithmeticException ausgelöst wird.

Java wirft

wirft ist ein Schlüsselwort in Java, das in der Signatur einer Methode verwendet wird, um anzugeben, dass diese Methode möglicherweise eine der aufgelisteten Typausnahmen auslöst. Der Aufrufer dieser Methoden muss die Ausnahme mithilfe eines Try-Catch-Blocks behandeln. 

Syntax:

Typ method_name(parameters) löst Ausnahmeliste aus

Dabei ist Ausnahmeliste eine durch Kommas getrennte Liste aller Ausnahmen, die eine Methode auslösen könnte.

Wenn in einem Programm die Möglichkeit besteht, dass eine Ausnahme ausgelöst wird, warnt uns der Compiler immer davor und wir müssen diese geprüfte Ausnahme behandeln. Andernfalls erhalten wir beim Kompilieren einen Fehler, der besagt, dass die nicht gemeldete Ausnahme XXX abgefangen oder zum Auslösen deklariert werden muss. Um diesen Fehler bei der Kompilierung zu verhindern, können wir die Ausnahme auf zwei Arten behandeln: 

  1. Durch die Verwendung von Try Catch
  2. Durch die Verwendung der wirft Stichwort

Wir können das Schlüsselwort throws verwenden, um die Verantwortung für die Ausnahmebehandlung an den Aufrufer zu delegieren (es kann sich um eine Methode oder eine JVM handeln), dann ist die aufrufende Methode für die Behandlung dieser Ausnahme verantwortlich.  

Beispiel 1: Unbehandelte Ausnahme

Java
class Geeks {  public static void main(String[] args)  {  Thread.sleep(10000);  System.out.println('Hello Geeks');  } } 

Ausgabe:

error: unreported exception InterruptedException; must be caught or declared to be thrown

Erläuterung: Im obigen Programm erhalten wir einen Kompilierzeitfehler, da die Möglichkeit einer Ausnahme besteht, wenn der Hauptthread in den Ruhezustand wechselt. Andere Threads erhalten die Möglichkeit, die Methode main() auszuführen, was zu einer InterruptedException führt. 

Task-Manager für Linux

Beispiel 2: Verwendung throws Ausnahme behandeln

Java
class Geeks {  public static void main(String[] args)  throws InterruptedException  {  Thread.sleep(10000);  System.out.println('Hello Geeks');  } } 

Ausgabe:

Hello Geeks

Erläuterung: Im obigen Programm haben wir mit dem Schlüsselwort throws das behandelt InterruptedException und wir erhalten die Ausgabe als Hallo Geeks.

Beispiel 3: Eine Ausnahme auslösen mitthrows

Java
class Geeks {  static void fun() throws IllegalAccessException  {  System.out.println('Inside fun(). ');  throw new IllegalAccessException('demo');  }  public static void main(String args[])  {  try {  fun();  }  catch (IllegalAccessException e) {  System.out.println('Caught in main.');  }  } } 

Ausgabe
Inside fun(). Caught in main. 

Erläuterung: Das obige Beispiel löst eine IllegalAccessException von einer Methode aus und behandelt sie in der Hauptmethode mithilfe eines Try-Catch-Blocks.

Unterschied zwischen Wurf und Würfen

Die Hauptunterschiede zwischen throw und throws in Java sind folgende:

werfen

wirft

Es wird verwendet, um explizit eine Ausnahme auszulösen.

Es wird verwendet, um zu deklarieren, dass eine Methode eine oder mehrere Ausnahmen auslösen kann.

Es wird innerhalb einer Methode oder eines Codeblocks verwendet.

Es wird in der Methodensignatur verwendet.

Es kann sowohl aktivierte als auch nicht aktivierte Ausnahmen auslösen.

Es wird nur für geprüfte Ausnahmen verwendet. Ungeprüfte Ausnahmen sind nicht erforderlich wirft

Rekha-Indianer

Die Methode oder der Block löst die Ausnahme aus.

Der Aufrufer der Methode ist für die Behandlung der Ausnahme verantwortlich.

Stoppt den aktuellen Ausführungsfluss sofort.

Es zwingt den Aufrufer, die deklarierten Ausnahmen zu behandeln.

throw new ArithmeticException('Error');

public void myMethod() löst IOException {} aus