Heim > Java > javaLernprogramm > Was sind die Ursachen und Lösungen für „Unreported Exception'-Fehler in Java?

Was sind die Ursachen und Lösungen für „Unreported Exception'-Fehler in Java?

DDD
Freigeben: 2024-12-31 14:47:10
Original
301 Leute haben es durchsucht

What are the causes and solutions for

Nicht gemeldete Ausnahme: Bedeutung und Lösung

Java-Programmierer stoßen häufig auf Fehler, die wie folgt formuliert sind:

"Fehler: nicht gemeldete Ausnahme, wobei XXX der Name von ist eine Ausnahmeklasse.“

Bedeutung und Java Konzepte

Dieser Fehler bedeutet, dass:

  1. Der Code löst eine geprüfte Ausnahme (XXX) aus oder gibt sie weiter.
  2. Die Ausnahme wird nicht ordnungsgemäß behandelt indem Sie es abfangen oder als erforderlich deklarieren Java.

Lösung

Um das Problem zu beheben, haben Sie zwei Möglichkeiten:

  1. Ausnahme abfangen: Verwenden Sie einen try ... Catch-Block, um die Ausnahme innerhalb der aktuellen Methode zu behandeln.
  2. Deklarieren dass die Methode die Ausnahme auslöst: Fügen Sie das Schlüsselwort throws gefolgt vom Namen der Ausnahme in der Methoden- oder Konstruktorsignatur hinzu, um die Verantwortung für die Ausnahmebehandlung an den Aufrufer zu übergeben.

Überprüft vs. ungeprüfte Ausnahmen

Java klassifiziert Ausnahmen in zwei Kategorien Typen:

  • Geprüfte Ausnahmen: Throwable, Exception (und Unterklassen), ausgenommen RuntimeException und seine Unterklassen.
  • Ungeprüfte Ausnahmen: Fehler (und Unterklassen), RuntimeException (und Unterklassen).

Geprüfte Ausnahmen erfordern eine explizite Behandlung, während ungeprüfte Ausnahmen dies nicht tun.

Beispiel: Werfen und Fangen in derselben Methode

static void t() throws IllegalAccessException {
    try {
        throw new IllegalAccessException("demo");
    } catch (IllegalAccessException e) {
        System.out.println(e);
    }
}
Nach dem Login kopieren

In diesem Beispiel löst die t-Methode eine Ausnahme aus, die jedoch auch innerhalb derselben Methode abgefangen und behandelt wird. Daher sollte die Throws-Deklaration in der Signatur entfernt werden.

Bad Practices mit Ausnahmen

Vermeiden Sie die folgenden Bad Practices:

  • Ausnahme abfangen (oder auslösbar): Stattdessen werden bestimmte Ausnahmen abgefangen, um unbeabsichtigte Ausnahmen zu verhindern Behandlung.
  • Methoden als auslösende Ausnahme deklarieren: Vermeiden Sie es, Aufrufer zu zwingen, potenziell geprüfte Ausnahmen zu behandeln.
  • Ausnahmen unterdrücken: Ausnahmen nicht ignorieren weil sie die Diagnose von Laufzeitfehlern erschweren können.

Besonderes Fälle

  • Statische Initialisierer: Statische Variablen deklarieren, die geprüfte Ausnahmen in statischen Blöcken anstelle von Felddeklarationen auslösen.
  • Statische Blöcke: Abgefangene Ausnahmen innerhalb statischer Blöcke müssen innerhalb des Blocks behandelt werden, da es keine Umschließung gibt Kontext.
  • Lambdas: Lambdas können aufgrund der Anforderungen an die Funktionsschnittstelle keine ungeprüften Ausnahmen auslösen. Behandeln Sie Ausnahmen innerhalb des Lambda selbst.
  • Zwei Ausnahmen mit demselben Namen: Wenn der Compiler trotz Vorhandensein des Schlüsselworts throws einen Fehler „nicht gemeldete Ausnahme“ meldet, prüfen Sie, ob die Ausnahmenamen unterschiedlich sind vollqualifizierte Namen, die auf verschiedene Ausnahmen hinweisen.

Weitere Informationen Informationen

Ausführliche Informationen zu Java-Ausnahmen finden Sie in den folgenden Ressourcen:

  • [Oracle Java Tutorial: Die Catch- oder Specify-Anforderung](https://docs.oracle .com/javase/tutorial/essential/Exceptions/catchOrDeclare.html)
  • [Abfangen und Behandeln Ausnahmen](https://docs.oracle.com/javase/tutorial/essential/Exceptions/handling.html)
  • [Angeben der von einer Methode ausgelösten Ausnahmen](https://docs.oracle.com /javase/tutorial/essential/Exceptions/throwing.html)

Das obige ist der detaillierte Inhalt vonWas sind die Ursachen und Lösungen für „Unreported Exception'-Fehler in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage