Was ist ein Unterschied zwischen Wurf vs. wirft in Java

Veröffentlicht: 2013-07-23

Was ist ein Unterschied zwischen Wurf vs. wirft in Java

Der eine erklärt es, der andere tut es

Es gibt fünf Schlüsselwörter im Zusammenhang mit der Ausnahmebehandlung in Java, z. B. try, catch, finally, throw und throws . Neben dem Unterschied zwischen final, final und finalize ist throw vs throws eine der häufig gestellten Java-Interviewfragen.

  • throw Schlüsselwort wird verwendet, um eine Ausnahme von jeder Methode oder jedem statischen Block in Java zu werfen, während throws Schlüsselwort , das in der Methodendeklaration verwendet wird, angibt, welche Ausnahme möglicherweise von dieser Methode ausgelöst werden kann. Sie sind nicht austauschbar.
  • Wenn eine Methode eine geprüfte Ausnahme auslöst, wie im folgenden Beispiel gezeigt, kann der Aufrufer diese Ausnahme entweder behandeln, indem er sie abfängt, oder sie erneut auslösen, indem er eine andere throws-Klausel in der Methodendeklaration deklariert.
  • Die Throw-Klausel kann in jedem Teil des Codes verwendet werden, in dem Sie der Meinung sind, dass eine bestimmte Ausnahme an die aufrufende Methode geworfen werden muss.

Untertreibung von Java-Ausnahmen:

Wenn eine Methode eine Ausnahme auslöst, sollte sie entweder von einem try-catch-Block umgeben sein, um sie abzufangen, oder diese Methode sollte die throws-Klausel in ihrer Signatur haben. Ohne die throws-Klausel in der Signatur weiß der Java-JVM-Compiler nicht, was er mit der Ausnahme machen soll. Die throws-Klausel teilt dem Compiler mit, dass diese bestimmte Ausnahme von der aufrufenden Methode behandelt wird.

Unten ist ein sehr einfaches Beispiel, das das Verhalten von Throw, Throws, Try, Catch, finally block in Java erklärt.

Ergebnis:

Nullzeiger-Ausnahme - Crunchify

Ersetzen Sie jetzt einfach die Zeilen 45 und 46 durch die folgende Zeile, um das folgende Ergebnis zu sehen:

Neues Ergebnis:

Liste aller Java-Tutorials, die Sie interessieren könnten.

Bonus-Tipps zu Ausnahmen:

  • Die normale Programmausführung wird sofort verzweigt, wenn eine Ausnahme ausgelöst wird.
  • Geprüfte Ausnahmen müssen abgefangen oder weitergeleitet werden. Dies kann in einer try … catch- Anweisung oder durch Definition der Ausnahme in der Methodendefinition erfolgen.
  • Die Ausnahme wird vom ersten Catch -Block abgefangen, dessen zugeordnete Ausnahmeklasse mit der Klasse oder einer Oberklasse der ausgelösten Ausnahme übereinstimmt.
  • Wenn in der Ausnahmekette kein passender Catch -Block gefunden wird, wird der Thread, der die ausgelöste Ausnahme enthält, beendet.
  • Der finally -Block nach einer try … catch -Anweisung wird unabhängig davon ausgeführt, ob eine Ausnahme abgefangen wird oder nicht.
  • Die Rückkehr innerhalb eines finally -Blocks unterbricht die Ausnahmekette zum Aufrufer, sogar für nicht abgefangene Ausnahmen.