PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java Fehlermeldung:


Matrix316
2003-02-05, 17:35:24
Was zum Geier bedeutet:

java.lang.NullPointerException

Und warum kommt sowas bzw. wie kann man sowas verhindern???

Xmas
2003-02-05, 17:40:10
public class NullPointerException
extends RuntimeException


Thrown when an application attempts to use null in a case where an object is required. These include:

Calling the instance method of a null object.
Accessing or modifying the field of a null object.
Taking the length of null as if it were an array.
Accessing or modifying the slots of null as if it were an array.
Throwing null as if it were a Throwable value.


Du versuchst also auf ein Null-Objekt zuzugreifen oder übergibst irgendwo ein Null als Parameter, wo es nicht hinsollte.

Matrix316
2003-02-05, 18:00:57
Ist mit Null jetzt "null" oder "0" gemeint?

Xmas
2003-02-05, 18:01:57
Originally posted by Matrix316
Ist mit Null jetzt "null" oder "0" gemeint?
null

Matrix316
2003-02-05, 18:10:12
Wann wird eigentlich eine Variable oder irgendwas "null" (sofern man es nicht selbst zuweist)?

Oder was ist der Unterschied zwischen "null" und "0" ?

Demirug
2003-02-05, 18:16:26
Originally posted by Matrix316
Wann wird eigentlich eine Variable oder irgendwas "null" (sofern man es nicht selbst zuweist)?

Oder was ist der Unterschied zwischen "null" und "0" ?

0 ist die Zahl 0.

null ist ein verweiss auf nichts.

Wenn mich meine Java Kenntnisse jetzt nicht ganz im Stich lassen sind Objektverweise solange null bis man ein objekt zuweist oder mit new ein neues dafür anlegt.

ethrandil
2003-02-05, 18:38:15
jupp. Auch fehlgeschlagene (und gecatchte) Dateioperationen geben manchmal null bzw nichts zurück.
Schick doch mal ein bisschen Code, das einzige was hilft ist eine Fehlerlokalisation (debugging)....
sachen wie

FileStream fs = null;
try{
fs = new FileStream(new File("c:\unbekannt.txt");
}
catch(Exception e){
//nothing ...
}
fs.write(...); //Evtl ERROR!, da fs = null...

Oder sachen wie:

String str = new String("01234");
char chr = str.chatAt(6); // kann imho auch eine nullpointeraception schmeißen

Es deutet in der Regel darauf hin, dass irgendwo ein Objekt nicht initialisiert wurde oder irgendeine Schleife länger läuft als gedacht :eyes:

Eth

Abe Ghiran
2003-02-05, 18:50:08
Originally posted by ethrandil

FileStream fs = null;
try{
fs = new FileStream(new File("c:\unbekannt.txt");
}
catch(Exception e){
//nothing ...
}
fs.write(...); //Evtl ERROR!, da fs = null...



Wenn man in der ersten Zeile einfach nur

FileStream fs;

schreibt, wird man sogar schon vom Compiler darauf hingewiesen, daß die Variable fs bei fs.write() u.U. noch nicht initialisiert sein könnte ("Variable fs might not have been initialized").
Deswegen gehört meiner Meinung nach sowas wie das fs.write dann auch konsequenterweise noch in den try Block.

Jan

Edit: Juhu, Full Member :wink:

ethrandil
2003-02-05, 19:08:43
normalerweise sollte alles was nullpointerexceptions verursacht in nen try-block :)
Das war ja nur ein Beispiel ;)

Matrix316
2003-02-05, 19:15:16
"Ein bißschen" Code kann ich nicht liefern weil das ganze zu umfangreich ist. Ich weiß garnet wo ich anfangen sollte - oder gleich alles - was aber den Rahmen sprengen würde. ;)

Also es gibt die Methode:

public Komplex mult( Komplex x )

und irgendwann gibts bei

System.out.println(x.a);

den Fehler mit dem NullPointer

(ist nur eine Testausgabe welche Werte jetzt this.a, this.b, x.a und x.b haben, wobei a der realteil und b der imaginärteil ist)

Aber das wird euch auch nicht helfen wahrscheinlich. ;)

Demirug
2003-02-05, 19:24:28
Matrix316, dann wir dir jetzt wohl nichts anderes übrig bleiben als dich mit dem besten Freund des Programmieres ein inniges Verhältniss einzugehen.

Viel Spass mit dem Debugger ;)

ethrandil
2003-02-05, 19:52:38
also ich mach das idr so: ich bau ein paar prints ein und seh wie weit er kommt ... wennn ich die fehlerzeile exakt hab (steht manchmal in der exception) ist der fehler meistens klar ...
Aber in deinem Fall ...
hmmmmmm