JavaRush /Java-Blog /Random-DE /Übersetzung: 6 Java-Ausnahmen, die Java-Neulinge plagen.
profeg
Level 18

Übersetzung: 6 Java-Ausnahmen, die Java-Neulinge plagen.

Veröffentlicht in der Gruppe Random-DE

6 Java-Ausnahmen, die Java-Anfänger heimsuchen.

(Original) (Ich bin neu in Java und Englisch, daher freue ich mich über Kritik und Hilfe) Sowohl früher als auch heute stoße ich auf viele Java-Neulinge, die ein Problem mit ein paar häufigen Ausnahmen haben, die ich noch einmal erklären muss. Ich glaube, dass andere erfahrene Java-Entwickler das gleiche Problem haben, wenn sie versuchen, Neulingen bei der Bewältigung dieser Ausnahmen zu helfen. Daher habe ich diesen Artikel für meine eigene Entwicklung geschrieben. Bitte kommentieren Sie diesen Artikel oder fügen Sie Ausnahmen zur Liste unten hinzu.
1. NoClassDefFoundError
Dies ist eine dieser Ausnahmen mit einer Meldung wie „Exception in thread „main“ NoClassDefFoundError“ , auf die die meisten neuen Java-Entwickler in der Welt der Java-Programmierung stoßen. Ein Anfänger schreibt ein Programm, das „Hallo Welt!“ anzeigt, geht zur Befehlszeile, gibt „java …“ ein, drückt die Eingabetaste und BAM! =). Und herauszufinden, wie man das Programm dazu bringt, „Hallo Welt!“ zu drucken. auf dem Monitor, dauert einige Zeit. NoClassDefFoundError tritt auf, wenn die Java Virtual Machine (JVM) versucht, beim Start auf eine Klasse zuzugreifen und die Klasse nicht gefunden wird, obwohl dieselbe Klasse zur Kompilierungszeit gefunden wurde. Am häufigsten tritt diese Ausnahme auf, wenn versucht wird, ein Programm mit dem Befehl „Java“ auszuführen, und der Klassenpfad nicht richtig eingestellt ist. Hier finden Sie eine Beschreibung der Gründe, warum diese Ausnahme auftritt.
  • Die Klasse ist im -classpath nicht verfügbar.
  • Die Umgebungsvariable CLASSPATH wurde überschrieben. Das Vorhandensein und die Richtigkeit können Sie mit dem Windows-Befehl „set“ überprüfen.
Die Lösung des Problems wird hier genauer beschrieben .
Darüber hinaus müssen Sie den Unterschied zwischen der Umgebungsvariablen CLASSPATH und dem Interpreterschlüssel -classpath verstehen. Fachleute raten von der Verwendung von CLASSPATH ab. Der beste Weg besteht darin, den Schlüssel -classpath an den Interpreter zu übergeben.
2. ClassNotFoundException
ClassNotFoundException ist eine weitere Ausnahme, die für einen Neuling zum Albtraum wird, sobald er mit dem Programmieren beginnt. Interessanterweise verwechselt der durchschnittliche Java-Entwickler häufig die Ausnahmen „ClassNotFoundException“ und „NoClassDefFoundError“ . Und so bleibt der Unterschied zwischen diesen beiden Ausnahmen eine der am häufigsten gestellten Fragen in Vorstellungsgesprächen für die Junior-Stelle . ClassNotFoundException tritt auf, wenn die JVM versucht, eine bestimmte Klasse zu laden und diese nicht im Klassenpfad findet. Einer der häufigsten Orte, an denen ein neuer Java-Entwickler zum ersten Mal darauf stößt, ist die Verbindung zu einer Datenbank mithilfe der JDBC-Bibliothek. Dort werden wir versuchen, den Treiber mit Code wie Class.forName("JDBCdriver") zu laden. Ein guter Artikel über ClassNotFoundException ist hier . Der Versuch, das Konzept der Java-Klassenlader zu verstehen , ist die effektivste Methode, um dieses Problem zu lösen. Sie können lesen, wie Sie den Java-Klassenpfad in einer Win/Unix-Umgebung konfigurieren . Wie in den Java-Dokumenten angegeben , tritt in den folgenden Fällen eine Ausnahme auf:
  • Sie versuchen, eine Klasse mit der Methode „Class.forName“ zu laden, und die .class-Datei befindet sich nicht im Klassenpfad. Dies ist das häufigste der drei hier aufgeführten Szenarios.
  • Wenn der Klassenlader versucht, eine Klasse mithilfe der LoadClass zu laden.
  • Wenn der Klassenlader versucht, eine Klasse mit findSystemClass zu laden.
3. NullPointerException
Diese Ausnahme ist für Anfänger leichter zu verstehen als die ersten beiden. Darüber hinaus ist diese Ausnahme leicht zu identifizieren, weil Wenn die Ausnahme auftritt, gibt die Meldung über die Ausnahme die Zeilennummer im Programm an, in der sie aufgetreten ist. Diese Ausnahme tritt auf, wenn die JVM versucht, auf ein Objekt zuzugreifen oder eine Methode für ein Objekt aufzurufen und eine Null anstelle einer Referenz auf das Objekt erhält. Das Java-Dokument nennt außerdem folgende Gründe:
  • Auf eine Methode für ein Objekt zugreifen oder diese ändern, die ungültig ist. (d. h. anstelle eines Verweises auf ein JVM-Objekt erhält es null)
  • Ermitteln der Länge eines Arrays, wenn es ungültig ist. (zum Beispiel nicht initialisiert)
  • Es wurde versucht, auf ein nicht vorhandenes Array-Element vom Typ Object zuzugreifen. (d. h. wenn das Array-Element anstelle einer Objektreferenz Null enthält)
Die einfachste Methode, diese Ausnahme zu vermeiden, ist die Verwendung einer Nicht-NULL-Prüfung. Früher oder später wird dies jedoch zu einer Java-Entwicklungspraxis und Sie werden überall Nicht-NULL-Prüfungen finden. Interessanterweise gilt das Einfügen von Nicht-NULL-Prüfungen überall nicht als guter Programmierstil . Und der Hauptgrund für die Verwendung einer Nicht-NULL-Prüfung besteht darin, dass der Entwickler im Fehlerfall ein Nullobjekt übergeben möchte. Stattdessen ist es eine gute Programmierpraxis , dass Programmierer ein leeres Objekt anstelle eines Nullwerts als grundlegende Logik dafür zurückgeben sollten , wie sich ein Programm im Fehlerfall verhält. Die Übernahme dieser Programmierpraxis ist jedoch schwieriger als es scheint.
Auf unserer Ressource gibt es einen guten Artikel dazu .
4. ClassCastException
Dies ist eine weitere Ausnahme, die Anfängern bekannt ist und die auftritt, wenn versucht wird, ein Objekt in eine Klasse umzuwandeln, die keine Unterklasse davon ist. Auch dies ist relativ leicht zu verstehen, zu identifizieren und einfach zu beheben. Eine Möglichkeit, diese Ausnahme zu vermeiden, wenn der Typ des Objekts zur Laufzeit unbekannt ist, besteht darin, mithilfe von „InstanceOf“ zu überprüfen, ob das Objekt eine Instanz einer bestimmten Klasse ist.
5. ArrayIndexOutOfBoundsException
Diese Ausnahme ist selbsterklärend und tritt auf, wenn die JVM versucht, auf ein Array-Element mit einem nicht vorhandenen Index zuzugreifen, z. B. negativ (-1) oder größer oder gleich der Größe des Arrays. Es ist ganz einfach zu verstehen, zu definieren und zu korrigieren . Beim Erstellen einer Schleife tritt beispielsweise for (i = 0; i <= cmd_stack.length; i++) System.out.println(cmd_stack[i]); eine Ausnahme auf, da die Indizes im Array bei 0 beginnen und die Längenmethode die Anzahl der Elemente zurückgibt und die Zahl um 1 größer als der Wert des letzten Index ist. Richtige Verwendung for (i = 0; i < cmd_stack.length; i++) System.out.println(cmd_stack[i]);
6. IllegalArgumentException
Diese Ausnahme kommt seltener vor und ist relativ leicht zu verstehen, zu identifizieren und zu beheben. Es tritt auf, wenn die JVM versucht, eine nicht vorhandene Methode oder eine Methode mit einem ungültigen Argument aufzurufen.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION