Unterschied zwischen werfen und wirft in Java

Autor: Laura McKinney
Erstelldatum: 1 April 2021
Aktualisierungsdatum: 15 Kann 2024
Anonim
01: Anfänge der Programmierung, Java, Summenformel, Compiler, Objektorientierte Programmierung
Video: 01: Anfänge der Programmierung, Java, Summenformel, Compiler, Objektorientierte Programmierung

Inhalt


Throw und throws sind die Schlüsselwörter für die Ausnahmebehandlung. Das werfen Das Schlüsselwort wird verwendet, um die vom Programmierer erstellte Instanz der Ausnahme manuell an die JVM zu übergeben. Das wirft Schlüsselwort zur Übergabe der Verantwortung für die Behandlung der in der Methode aufgetretenen Ausnahme an die aufrufende Methode. Der grundlegende Unterschied zwischen throw und throws besteht darin, dass das throw-Schlüsselwort das Ausnahmenobjekt verwendet, während das throws-Schlüsselwort den Namen der Ausnahmeklassen verwendet.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle

Vergleichsbasiswerfenwirft
BasicDas Throw-Schlüsselwort übergibt unser erstelltes Ausnahmeobjekt manuell an JVM.Das Schlüsselwort throws wird verwendet, um die Verantwortung für die Ausnahmebehandlung an den Aufrufer der Methode zu delegieren.
Syntaxthrow Throwable-Instanz;return_type method_name (parameter-list) löst ExceptionClass_list aus
{
// body of method
}
gefolgt vonNach dem Schlüsselwort throw folgt das Ausnahmeobjekt.Nach dem Schlüsselwort throws folgt die Liste der Ausnahmeklassen, die in der Methode auftreten können.
Anzahl der ausgelösten AusnahmenDas throw-Schlüsselwort kann eine einzelne Ausnahmeinstanz auslösen.Das Schlüsselwort throws kann mehrere durch Komma getrennte Ausnahmeklassen deklarieren.


Definition von werfen

Das Schlüsselwort „werfenWird verwendet, um unsere erstellte Ausnahmeinstanz manuell an die JVM (Java Virtual Machine) zu übergeben. Wenn "throw" nicht zum Auslösen einer Ausnahmeinstanz verwendet wird und die Ausnahme auftritt, wirft das Laufzeitsystem die Ausnahmeinstanz intern an JVM und das Programm wird abnormal beendet. Die allgemeine Form des Schlüsselworts throw lautet:

werfen Throwable_instance;

Über der Throwable_Instanz muss sich ein Objekt der Klasse Throwable befinden. Primitive Typen wie int, float oder char und die nicht auslösbare Klasseninstanz können nicht mit dem Schlüsselwort throw ausgelöst werden.

Nehmen wir ein Beispiel, um das Schlüsselwort throw zu verstehen.

Klassentest {Public Static Void Main (String Args) {Neue ArithmeticException auslösen ("/ by zero"); }}

Im obigen Code löst das Schlüsselwort throw eine Instanz der Exception-Klasse "ArithmeticException" aus. Wenn das throw-Schlüsselwort nicht verwendet worden wäre, hätte die main () -Methode intern ein an die JVM übergebenes Ausnahmeobjekt erstellt.


Die zu beachtenden Punkte zum Keyword throw:

  • Das Ausnahmeobjekt wird manuell an die JVM übergeben.
  • Es wird am besten für benutzerdefinierte Ausnahmen oder benutzerdefinierte Ausnahmen verwendet.
  • Wenn der Speicher nicht dem durch das Schlüsselwort throw ausgelösten Ausnahmeobjekt zugeordnet ist, tritt die Laufzeitausnahme NullPointerException auf.
  • Das throw-Schlüsselwort stoppt die Ausführung des Programms unmittelbar nach seinem Auftreten. Wir können keine Anweisung direkt nach der throw-Anweisung schreiben. Wenn wir eine Anweisung direkt nach der throw-Anweisung schreiben, zeigt der Compiler während der Kompilierung eine fehlerhafte, nicht erreichbare Anweisung an.
  • Mit dem Schlüsselwort throw können nur Objekte der Klasse Throwable geworfen werden. Wenn das geworfene Objekt kein Objekt der Klasse Throwable ist, wird beim Kompilieren der Fehler „Inkompatibler Typ gefunden. . benötigt java.lang.Throwable ”

Hinweis:

Das Schlüsselwort throw wird in C ++, JAVA und C # verwendet, um eine Ausnahme manuell auszulösen.

Definition von Würfe

Das "wirftDas Schlüsselwort ”wird verwendet, um die Verantwortung für die Behandlung der in der Methode aufgetretenen Ausnahme an die aufrufende Methode zu delegieren. Die Aufrufermethode ist für die Behandlung der Ausnahme verantwortlich, bei der es sich um eine andere Methode oder JVM handeln kann. Es deklariert die Liste der Ausnahmeklassen, die in der Methode auftreten können.

Die Verwendung des Schlüsselworts throws überzeugt den Compiler, dass die in der Methode aufgetretene Ausnahme von der aufrufenden Methode behandelt werden soll, sodass kein Kompilierungsfehler auftritt. Die aufrufende Methode muss jedoch die Ausnahme behandeln oder die Verantwortung für die Behandlung der Ausnahme an ihre Hierarchiemethode delegieren. Wenn die Laufzeitausnahme auftritt, wird die abnormale Beendigung des Programms auch nach der Verwendung des Schlüsselworts throws nicht verhindert. Wenn die Aufrufermethode main () ist, behandelt die JVM standardmäßig die Ausnahme.

Die allgemeine Form des Throws-Schlüsselworts lautet:

return_type method_name (parameter-list) löst exceptionClass_list {// body of method} aus

Wir können sehen, dass das Schlüsselwort throws nach der Signatur der Methode erscheint und die Liste der Ausnahmeklassen enthalten kann, die in der Methode auftreten können. Die Liste der Ausnahmeklassen, die nach dem Auslösen des Schlüsselworts geschrieben wurden, wird durch Komma getrennt.

Nehmen wir ein Beispiel, um das Schlüsselwort throws zu verstehen.

calss Test {public static void main (String args) löst InterruptedException aus {thread sleep (10000); }}

Im obigen Code wird der Haupt-Thread mithilfe der sleep () -Methode für einige Zeit in den Ruhezustand versetzt. Wenn sich die Hauptmethode im Ruhezustand befindet, ist es möglich, dass die anderen Threads den Hauptthread unterbrechen. Das Schlüsselwort throws wird jedoch nach der Signatur der Methode main () verwendet, sodass das Programm problemlos kompiliert werden kann. Das Schlüsselwort throws deklariert die aktivierte Ausnahmeklasse InterruptedException. Wenn ein anderer Thread den Hauptthread zur Laufzeit unterbricht, übergibt das Schlüsselwort throws diese Ausnahme an den Aufrufer der Methode main (), die JVM ist. Die JVM würde das Programm abnormal beenden.

Die Punkte, an die Sie sich über das Schlüsselwort throws erinnern sollten:

  • Das Schlüsselwort throws wird nur zum Deklarieren der aktivierten Ausnahmeklassen verwendet. Die Verwendung des Schlüsselworts throws für eine nicht aktivierte Ausnahme hat keine Auswirkungen.
  • Wenn die Methode die Ausnahme nicht alleine behandeln möchte, delegiert sie diese Ausnahme mit dem Schlüsselwort throws an die Aufrufermethode dieser Klasse.
  • Seine Verwendung ermöglicht nur eine reibungslose Kompilierung des Programms.
  • Wenn zur Laufzeit eine Ausnahme auftritt, wird das Programm auch nach Verwendung des Schlüsselworts throws abnormal beendet.
  • Es wird empfohlen, try / catch-Block zum normalen Beenden des Programms zu verwenden, wenn zur Laufzeit eine Ausnahme auftritt.

Hinweis:

Das Schlüsselwort wirft nur in Java verwendet. C ++ und C # verwenden das Schlüsselwort throws nicht.

  1. Beim Auslösen des Schlüsselworts wird die Verantwortung für die Ausnahmebehandlung manuell an JVM übergeben, während beim Auslösen des Schlüsselworts die Verantwortung für die Ausnahmebehandlung an die Aufrufermethode des Codes übergeben wird, in dem eine Ausnahme aufgetreten ist.
  2. Auf das throw-Schlüsselwort folgt das Ausnahmeobjekt, das es an die JVM übergibt. Auf das Schlüsselwort throws folgen die Ausnahmeklassen, die in der Methode auftreten können.
  3. Das throw-Schlüsselwort kann jeweils ein einzelnes Ausnahmeobjekt auslösen, während das throw-Schlüsselwort mehrere durch Komma getrennte Ausnahmeklassen gleichzeitig deklarieren kann.

Fazit:

Das Schlüsselwort throw wird am besten für die angepasste Ausnahme verwendet. Der try / catch-Block eignet sich am besten für die Behandlung der Ausnahmen als verglichenes Throws-Schlüsselwort.