OOP Exception Handling - NullPointerException

Don_Alfredo

Mitglied
guten morgen,

public Fahrzeuge(FahrzeugeNode owner) throws NullPointerException
Der Konstruktor der Klasse soll soabgeändert werden, dass es zukunftig
nur noch möglich ist, einen Fahrzeugknoten (Vornamen und Nachnamen des Besitzers) für einen bestimmten, vorgegebenen Besitzer zu erzeugen und komplett leere Fahrzeugknoten sollen vermieden werden.
Sollte der übergebene owner null sein, soll eine NullPointerException
geworfen werden. Andernfalls ist das Fahrzeugknoten mit owner zu initialisieren – hierfür
verwende ich die setFahrzeugNodeRoot() Methode.

mein bisheriger Vorschlag, der allerdings nicht funktioniert. ich hab irgendwie den überblick verloren und steh wie der sprichwörtliche ochse vorm berg :rtfm:

Java:
public Fahrzeuge(FahrzeugeNode owner) throws NullPointerException {
        if (this.root == null) {
            throw new NullPointerException(
                    "blablablabla");
        }
    }

und die set-Methode für das einfügen

der eintrag soll den Index 0 zugewiesen bekommen und meiner FahrzeugKnoten Liste hinzugefügt werden

wie mache ich das mit dem index und wie füge ich den knoten in meine liste hinzu?

Java:
 public void setFahrzeugeRoot(FahrzeugeNode o) {

        setFahrzeugeRoot(root);
        entries.add(root);

Kann mir da jmd bitte einen freundlichen Hinweis geben wie ich das umsetzen kann/soll und ob das bisherige richtig ist?

mit verzweifelten grüßen

don
 

Der Müde Joe

Top Contributor
Man darf nie, ich wiederhole NIE ein RuntimeException werfen (throws). Dazu gehört auch eine NPE. Die lässt man fliegen. Das ist ein Fehler der zu vermeiden ist.
 

javimka

Top Contributor
Von welchem Typ ist entries? ArrayList? Dann entries.add(0,root). Ansonsten sehe ich nicht so richtig, was falsch sein könnte.
 

Don_Alfredo

Mitglied
ist leider in der Aufgabenstellung so vorgeschrieben, daran kann ich nix ändern :bahnhof:

//edit: annähernd zeitgleich gepostet: ja ist eine arraylist
 

Der Müde Joe

Top Contributor
>ist leider in der Aufgabenstellung so vorgeschrieben, daran kann ich nix ändern

sofort beim Prof, Assi oder was auch immer beschweren. Man deklariert nie NPEs ;-)

EDIT:
Das sind immer grobe programmier fehler.
 

Der Müde Joe

Top Contributor
Ansonsten. Was mich grad irritiert, ist die zweite Methode.
setFahrzeugRoot(... o)
und dann darin:
setFahrzeugeRoot(root)

was ist root?
Sicher eine globale Variabel. Schlusendlich eine Endlosschleife (rekursion)?
 

ThreadPool

Bekanntes Mitglied
[...]
Das sind immer grobe programmier fehler.

Quellen?

Sun sieht das pragmatischer:
Unchecked Exceptions — The Controversy (The Java™ Tutorials > Essential Classes > Exceptions)
Sun hat gesagt.:
[...]

One case where it is common practice to throw a RuntimeException is when the user calls a method incorrectly. For example, a method can check if one of its arguments is incorrectly null. If an argument is null, the method might throw a NullPointerException, which is an unchecked exception.

[...]

Here's the bottom line guideline: If a client can reasonably be expected to recover from an exception, make it a checked exception. If a client cannot do anything to recover from the exception, make it an unchecked exception.
 

Schumi

Bekanntes Mitglied
Vielleicht ein kleines Missverständniss. Joe meint, dass Du das werfen der NPE nicht deklarieren sollst (also throws NPE in der Methodendeklaration) werfen an sich (also throw new NPE...) kannst Du natürlich schon machen. Sicher dass das deklarieren der Exception auch so gefordert ist?

Ansonsten würde ich:
Java:
 if (owner == null)
abfragen und dann die Exception werfen.
 

tfa

Top Contributor
Ich glaube Joe meint, man sollte keine RTEx in der throws-Klausel bei Methodendefinitionen angeben. Das ist in der Tat überflüssig - obwohl besonders gefährlich ist es auch wieder nicht.
RuntimeExceptions kann man natürlich schon werfen, dafür sind die ja da.
 

Don_Alfredo

Mitglied
erstmal vielen dank für eure tipps und hinweise. :toll: ich war mir nicht bewusst, welche eine kleine diskussion entsteht aufgrund einer exception :shock:

root ist mein oberster knoten, sozusagen meine wurzel, ein Automobil sozusagen.

Wie löse ich dann die daraus entstehende Endlosschleife?

gruß

don
 

javimka

Top Contributor
Indem du setFahrzeugeRoot(root) nur dann aufrufst, wenn es nötig ist. Vielleicht wäre es so besser:
Java:
 public void setFahrzeugeRoot(FahrzeugeNode o) {
        
        setFahrzeugeRoot(o);
        entries.add(o)
 

Der Müde Joe

Top Contributor
>Vielleicht wäre es so besser:

nö. Wenn du setFahrzeugeRoot(blub) in der Methode aufrufst, rufst du die Methode wieder auf, darin dan wieder, und wieder. Einfach in der Methode nicht die Methode wieder aufrufen.
 

javimka

Top Contributor
Stimmt natürlich, das war Blödsinn :oops:
Bevor wir nicht wissen, das die Methode bezwecken soll und wie die interne Struktur der Klasse aussieht, können wir nur raten, wie sie aussehen müsste.
 

Don_Alfredo

Mitglied
also root ist mein Wurzelknoten, der Anfang, das oberste Element. Es stellt den Knoten Automobil/Fahrzeug dar. Von diesem Knoten sollen verschiedene Abzweigungen weggehen.

Java:
 public void setFahrzeugeRoot(FahrzeugeNode o) {
 
        setFahrzeugeRoot(root);
        entries.add(0,root);
Ich soll lt. Aufgabenstellung mit Hilfe von setFahrzeugeRoot() eine Wurzelelement "owner" initialisieren. Diese Methode soll dementsprechend in der Nachfolgenden Methode aufgerufen werden in der

Java:
public Fahrzeuge(FahrzeugeNode owner) throws NullPointerException {
        if (this.root == null) {
            throw new NullPointerException(
                    "blablablabla");
        }
    }

damit genau das passieren sollte. Nur ich weiß nicht wie ich das machen soll? :rtfm:


ich hoffe ich konnte ein wenig Klarheit einbringen. ich bedanke mich schon im voraus für eure hilfestellungen

gruß

don
 

Don_Alfredo

Mitglied
die obigen punkte haben sich alle geklärt, vielen dank dafür. jetzt gibts aber ein neues problem. es soll eine main-methode das ganze testen. dazu hab ich mal folgendes verfasst, was allerdings nicht funktioniert. es soll entweder lt. aufgabenstellung die exception geworfen werden oder aber mit try&catch die exception abgefangen werden, sodass das ganze aber auch noch weiterläuft.
ich soll einen leeren Knoten einfügen, einen leeren Knoten löschen und einen beliebigen nicht vorhandenen.

Java:
   public static void main(String[] args) throws NullPointerException,
            NodeNotFoundException {
        Fahrzeuge myFahrzeuge = new Fahrzeuge();

        try {
            myFahrzeuge.insertNode(null);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

      }

ist das hier so semantisch korrekt und kann das überhaupt funktionieren? wie bekomme ich das programm dazu, noch weiter zu arbeiten?

gruß

don
 

javimka

Top Contributor
Das Programm arbeitet schon weiter, gleich nach dem try-catch Block, also bei zeile 12. Nur ist dort gleich das Ende deines Programms. Es gibt ja gar nichts mehr, was es noch arbeiten könnte.
 

Schumi

Bekanntes Mitglied
Du nutzt allerdings schon wieder (oder immer noch) die
Java:
throws NullPointerException
Deklaration. Mach das mal weg.
Java:
throws NodeNotFoundException
ist im Grunde schon ok allerdings bezweifle ich, dass es sinnvoll ist, das die main Exceptions wirft. Aber wenn Du ein throws deklarierst, solltest Du dann auch irgendwo werfen. Oder macht dies der Konstruktor von Fahrzeuge?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I JAX-RS Exception Handling Java Basics - Anfänger-Themen 4
M Exception Handling Java Basics - Anfänger-Themen 2
G Frage zu Exception-Handling Java Basics - Anfänger-Themen 5
X JFrame als JAR unsichtbar trotz Exception Handling Java Basics - Anfänger-Themen 5
S Schlechter Stil beim Exception Handling Java Basics - Anfänger-Themen 6
S Exception-Handling in main-Funktion? Java Basics - Anfänger-Themen 6
S Exception Handling Java Basics - Anfänger-Themen 4
M Frage zu Exception Handling Java Basics - Anfänger-Themen 10
D Exception Handling Java Basics - Anfänger-Themen 3
M Exception handling Java Basics - Anfänger-Themen 5
T Exception-Handling beim Lesen einer XML-Datei mit XMLDecoder Java Basics - Anfänger-Themen 4
G Exception-Handling Java Basics - Anfänger-Themen 6
B Exception Handling in der ActionPerformed-Methode Java Basics - Anfänger-Themen 7
T Exception Handling? Java Basics - Anfänger-Themen 6
A Exception Handling Fragen Java Basics - Anfänger-Themen 2
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
Fiedelbambu Exception in Application constructor Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
S JavaKara Null Exception Error Java Basics - Anfänger-Themen 4
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
LiFunk Exception: es dürfen nur Nummern eingelesen werden Java Basics - Anfänger-Themen 6
low_in_the_head Eigene Exception nutzen Java Basics - Anfänger-Themen 4
1 Exception Java Basics - Anfänger-Themen 2
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
J null exception Array Java Basics - Anfänger-Themen 5
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
C Exception-Frage Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
I Exception bei Button mit wait() und notifyAll() Java Basics - Anfänger-Themen 3
N Wie teste ich eine geworfene Exception? Java Basics - Anfänger-Themen 8
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
D Scanner- Exception NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception werfen bei falscher Datumseingabe Java Basics - Anfänger-Themen 14
A Exception handeling mit finally und objektreferenzen Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
S Exception Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
OSchriever Exception für Abbrechen-Schaltfläche JOptionpane Java Basics - Anfänger-Themen 9
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
J Exception unreachable Java Basics - Anfänger-Themen 12
O unchecked Exception Java Basics - Anfänger-Themen 4
P Exception werfen Java Basics - Anfänger-Themen 15
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
S Exception bei Verwendung von LocalDate Java Basics - Anfänger-Themen 19
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
D Warum die Nullpointer Exception Java Basics - Anfänger-Themen 6
O Exception behandlung einfach Ueben mit Fakt! Java Basics - Anfänger-Themen 10
I OOP Was ist die "Exception Hierarchie" ? Java Basics - Anfänger-Themen 3
U Null Exception aber keine Ahnung warum Java Basics - Anfänger-Themen 5
G Exception und Ausgabe der Duplikate Java Basics - Anfänger-Themen 6
H Try Catch Throw Exception Java Basics - Anfänger-Themen 1
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
Mosquera Exception Java Basics - Anfänger-Themen 5
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
N Nullpointer exception Java Basics - Anfänger-Themen 4
L Eigene Exception schreiben bei zu langem Array Java Basics - Anfänger-Themen 10
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
S Array Grenzen-Exception Java Basics - Anfänger-Themen 11
E InputStream im Servlet wirft Exception Java Basics - Anfänger-Themen 5
D Erste Schritte Java.lang.NullPointer.Exception Java Basics - Anfänger-Themen 8
G Arrays out of Bounds exception Java Basics - Anfänger-Themen 2
H Compiler-Fehler Out of Bunce Exception bei einem Char Java Basics - Anfänger-Themen 6
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
C Null Pointer Exception Java Basics - Anfänger-Themen 10
F Klassen Eigene Exception Bedingungen festlegen Java Basics - Anfänger-Themen 2
G Null Pointer Exception Java Basics - Anfänger-Themen 4
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
O Exception bei Parse-Vorgang Java Basics - Anfänger-Themen 17
T Exception Problem Java Basics - Anfänger-Themen 5
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
W Nullpointer Exception bei .add(...) Java Basics - Anfänger-Themen 6
L Input/Output InputMismatch.Exception Java Basics - Anfänger-Themen 7
B Exception Liste von Liste Java Basics - Anfänger-Themen 3
D Throw Exception Java Basics - Anfänger-Themen 2
MiMa JavaDoc Exception @throws schlagen an Java Basics - Anfänger-Themen 4
J Exception in thread "main" Java Basics - Anfänger-Themen 1
B Exception richtig einbinden Java Basics - Anfänger-Themen 1
M Exception soll Werte mitgeliefert bekommen Java Basics - Anfänger-Themen 12
M Selbstdefinierte Exception Java Basics - Anfänger-Themen 5
B Exception Throwable Java Basics - Anfänger-Themen 11
M Erste Schritte Start Methode - Exception Java Basics - Anfänger-Themen 1
F Operatoren Wieso fliegt hier eine NullPointer Exception :( Java Basics - Anfänger-Themen 3
F nullpointer exception - arrayerstellung Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben